在 `awk` 中,读取外部数据或配置

简介: 在 `awk` 中,读取外部数据或配置

awk 中,读取外部数据或配置可以通过以下几种方式实现:

  1. 直接通过文件作为输入

    awk '{ ... }' external_file
    

    这是最基本的方式,awk 会逐行读取指定的外部文件(如 external_file),并对每一行执行命令块中的操作。

  2. 从多个文件读取

    awk '...' file1 file2 ...
    

    可以同时处理多个文件,awk 会依次遍历每个文件。

  3. 使用 -v 参数导入环境变量或自定义变量

    var=value awk -v myvar="$var" '{ print $0, myvar }' input.txt
    

    在上述命令中,-v 参数用于将 shell 环境变量或用户定义的变量传递给 awk 脚本。例如,这里我们创建了一个名为 myvarawk 变量,并赋予了 shell 变量 value 的值。

  4. 从脚本内读取文件内容到变量

    awk '
      BEGIN {
         
        while (getline < "config.txt") {
         
          # 对 config.txt 文件的每一行进行处理
          # 比如分割字段并赋值给变量
          split($0, configArray, ":");
          key = configArray[1];
          value = configArray[2];
          # 然后可以使用这些变量
        }
      }
      {
          print $0, key, value; }
    ' data.txt
    

    BEGIN 块中,可以使用 getline 函数从外部文件(如 config.txt)读取内容,并对这些内容进行处理和存储到变量中,然后在后续的数据处理阶段使用这些变量。

  5. 通过 system() 函数调用其他命令获取输出

    awk '{
         
      cmd = "cat some_other_file";
      if ((cmd | getline line) > 0) {
         
        # 使用命令输出
        print $0, line;
      }
      close(cmd);
    }' input.txt
    

    system() 函数可以执行外部命令并将输出重定向到 awk 内部。注意,通常情况下为了正确处理资源,完成读取后应关闭管道连接 (close(cmd) 部分)。

以上展示了 awk 在不同场景下如何读取和利用外部数据或配置信息。根据具体需求选择合适的方法。

目录
相关文章
文件覆盖写入和追加写入:使用场景、命令和技巧详解
文件覆盖写入和追加写入:使用场景、命令和技巧详解
1159 0
|
6月前
|
存储
LabVIEW读取修改TDMS文件中的组名和通道名group name andchannel name
LabVIEW读取修改TDMS文件中的组名和通道名group name andchannel name
80 3
|
6月前
|
存储 Shell Perl
awk从脚本内读取文件内容到变量
awk从脚本内读取文件内容到变量
284 6
|
6月前
|
Perl
awk复杂用法多模式和多动作块
awk复杂用法多模式和多动作块
63 2
|
存储 缓存 安全
PHP的passthru() 函数:执行一个命令,并将输出直接发送到输出缓冲区,缓冲区是干什么的?为什么要发送到缓冲区?
PHP的passthru() 函数:执行一个命令,并将输出直接发送到输出缓冲区,缓冲区是干什么的?为什么要发送到缓冲区?
342 0
|
开发者 Python Windows
文件的读取方式 | 学习笔记
快速学习 文件的读取方式
文件的读取方式 | 学习笔记
|
分布式计算
有一个日志文件visitlog.txt,其中记录了用户访问网站的日期和访问的网站地址信息,每行一条记录。要求编写mapreduce程序完成以下功能: 1、 将不同访问日期的访问记录分配给不同的red
有一个日志文件visitlog.txt,其中记录了用户访问网站的日期和访问的网站地址信息,每行一条记录。要求编写mapreduce程序完成以下功能: 1、 将不同访问日期的访问记录分配给不同的red
143 0
根据用户输入的参数自动读取对应时间内的wrf模式输出数据
根据用户输入的参数自动读取对应时间内的wrf模式输出数据
|
C语言
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )
150 0
readline()函数:可以读取一行 分析: 1.创建一个file对象 2.使用循环读取每一行的内容 直到读取内容为空 3.将读取到的内容写
readline()函数:可以读取一行 分析: 1.创建一个file对象 2.使用循环读取每一行的内容 直到读取内容为空 3.将读取到的内容写