我在使用 AWK 的字段分隔符时遇到问题,输入文件如下所示
1 | 全部 | | 同义词 |
1 | 根 | | 学名 |
2 | 细菌 | 细菌 | 学名 |
2 | 莫内拉 | 莫内拉 | 部分|
2 | 原核生物 | 原核生物 | 部分|
2 | 原核生物 | 原核生物 | 部分|
2 | 原核生物 | 原核生物 | 部分|
2 | 细菌| 细菌| 爆炸名称 |
这里的字段分隔符是制表符,管道,制表符,\t|\t
所以我尝试只打印第一列和第二列
awk -F'\t|\t' '{print $1 "\t" $2}' nodes.dmp | less
而不是所需的输出,输出是第一列,后跟管道字符。我尝试转义管道\t\|\t
,但输出保持不变。
1 |
1 |
2 |
2 |
2 |
2 |
打印第一列和第三列给了我最初的预期输出。
awk -F'\t|\t' '{print $1 "\t" $3}' nodes.dmp | less
但我很困惑为什么这不能按预期工作。
我知道下面的 perl one liner 可以工作,但我真正想要的是使用 awk。
perl -aln -F"\t\|\t" -e 'print $F[0],"\t",$F[1]' nodes.dmp | less