命令行可正常运行的Awk代码写入脚本后无输出该如何解决?
问题原因
你把命令行参数 -F, 直接写入了awk脚本主体,这不符合awk脚本的语法规则,导致匹配逻辑无法正常执行。
正确写法
修改你的script.awk内容如下:
#!/usr/bin/awk -f # 处理文件前先设置字段分隔符为逗号,等价于命令行的-F参数 BEGIN { FS = "," } # 匹配规则和命令行写法完全一致,符合条件的行默认会输出 $4 == "finnish" && $5 ~ /swedish/
修改完成后直接执行gawk -f script.awk file.csv即可得到和命令行调用一致的结果。
可选方案
如果你不想在脚本里设置字段分隔符,也可以在调用时传入-F参数,此时脚本可以简化为:
#!/usr/bin/awk -f $4 == "finnish" && $5 ~ /swedish/
调用命令改为:
gawk -F, -f script.awk file.csv
内容的提问来源于stack exchange,提问作者Cebowski
相关产品推荐
相关产品推荐

