Mac OSX下执行awk过滤tsv文件报source line 1语法错误如何解决
问题原因
- 报错的核心是
awk的-F(字段分隔符参数)后缺少了指定的分隔符内容,awk错误将后续的脚本代码识别为分隔符参数,才触发了语法解析错误 - 你要处理的是.tsv(制表符分隔值)文件,分隔符需要指定为制表符
\t,你输入的命令里漏写了这部分
修复后的命令
awk -F'\t' '{ if ($5 == 20004 || $5 == 41200) print $0; }' ~/Desktop/results.entries.tsv > ~/filtered2.tsv
额外补充说明
- 如果匹配时发现预期的行没有被筛选出来,可以将数值改成字符串匹配格式,避免MacOS默认自带的BSD awk的数值匹配规则带来的差异:
awk -F'\t' '{ if ($5 == "20004" || $5 == "41200") print $0; }' ~/Desktop/results.entries.tsv > ~/filtered2.tsv - 之前操作能成功大概率是之前输入命令时没有漏写
-F后的制表符参数,本次手敲时遗漏了该内容
内容的提问来源于stack exchange,提问作者Nivi
相关产品推荐
相关产品推荐

