AWK脚本用file2中的相同记录替换file1中的记录

jef*_*uer 0 unix awk

我正在尝试解析file2 for record 23并使用它来替换file1的记录23.

这是我每次都要运行的命令.

script.awk file1 file2
Run Code Online (Sandbox Code Playgroud)

以下是两个文件的记录23的示例.相同的分隔符和每个值中的位数以及具有相同的第一个字段串.

currentmax: 1.7229 1.6888 1.1069 1.6238 
Run Code Online (Sandbox Code Playgroud)

这将是更大的awk脚本的第一部分.我会在这个脚本中添加更多内容,以便只使用file1中的新值并输出到file3,但这样可以用于以后.

我不确定命令中的不同文件顺序是否会使脚本更容易编写,然后操作file1直到输出到file3.切换file1和file2可能有效.

script.awk file2 file1
Run Code Online (Sandbox Code Playgroud)

gle*_*man 5

您需要先指定file2,因为它包含您要捕获的数据.

awk有几个内置变量可以帮助你.FNR是正在处理的当前文件的记录号.NR是到目前为止看到的所有行的记录数.

要从file2捕获记录23并替换file1的记录23:

awk '
  NR == FNR {
    # this block is processing the first file
    if (FNR == 23) line = $0
    next
  }
  FNR == 23 {$0 = line}
  {print}
' file2 file1 > file3
Run Code Online (Sandbox Code Playgroud)