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