可以设置全局AWK分隔符

时间:2017-01-21 07:30:44

标签: awk gawk

是否可以设置awk的全局分隔符,例如,在.conf文件或环境var?

我正在处理使用自定义分隔符的大量文件,不想每次都手动设置FS和OFS。

感谢。

1 个答案:

答案 0 :(得分:4)

不,你能做的最好是导出一个shell变量,然后从中设置FS,例如:

$ cat tst.awk
BEGIN { FS=ENVIRON["AWK_FS"] }
{ print NF }

$ export AWK_FS=","
$ echo 'a,b,c' | awk -f tst.awk
3

或包含设置FS的文件:

$ cat setFS.awk
BEGIN{ FS="," }

$ cat tst.awk
@include "setFS.awk"
{ print NF }

$ echo 'a,b,c' | awk -f tst.awk
3

" @ include" construct是特定于gawk的,请参阅https://www.gnu.org/software/gawk/manual/gawk.html#Include-Files。您仍然必须将相同的代码放入每个脚本以包含该文件,但至少实际的FS设置(以及OFS和您通常做的其他任何事情)代码将仅在该包含文件中指定一次。