setting the output field separator in awk
我在awk脚本中尝试这个语句(在包含独立代码的文件中,所以不是内联的),脚本名:print-table.awk
1 2 3 | BEGIN {FS ="\t";OFS ="," ; print"about to open the file"} {print $0} END {print"about to close stream" } |
从壳里往这边跑
1 | awk -f print-table.awk table |
其中表是以制表符分隔的文件,我的目标是在外部函数中声明字段分隔符(fs)和输出字段分隔符(ofs),并从shell调用
1 | awk -f file input |
在命令行中不设置字段分隔符时使用-f" "如果没有stdout,它会变成一个sed语句,用逗号替换制表符,
有什么建议我怎么做吗?
你需要说服awk一些东西已经改变了,让它重新格式化$0使用您的OFS。尽管有一种更习惯的方法可以做到这一点,但下面的工作是可行的。
1 2 3 | BEGIN {FS ="\t";OFS ="," ; print"about to open the file"} {$1=$1}1 END {print"about to close stream" } |
您需要更改awk中的一个字段:
1 | awk 'BEGIN {FS="\t";OFS=","; print"about to open the file"} {$1=$1}1' file |