awk 命令问题

awk 命令问题

awk当我尝试使用Unix 中的命令替换文本文件的第一行时遇到问题。

我正在使用这个语法:

awk '{ (FS=OFS=""); if($19=="2") sub($88,"4");print $0 }' input.txt>output.txt

此命令没有编辑文本文件的第一行。这背后的原因是什么?

答案1

如果没有输入和预期输出的示例,很难理解您要做什么(特别是sub($88,"4")看起来很可疑 - 第一个参数sub应该是正则表达式)。

但是,假设您希望将空FS应用于输入的第一个记录(行),那么您需要将其设置为使用规则解析第一条记录BEGIN。例如,比较

$ printf '123\n456\n' | awk '{FS=OFS=""; print $2}'

5

相对

$ printf '123\n456\n' | awk 'BEGIN{FS=OFS=""} {print $2}'
2
5

相关内容