我有一个非常具体的 awk 问题:
在这个命令中,输出是一个带有“;”的普通文件字段分隔符。
awk -F\: '{ FS = ";";}{ if($1>=11414836 && $1<=11500000) print $0;}' /file.txt>/newfile.txt
现在,我需要添加第三个条件:
awk -F\: '{ FS = ";";}{ if($1>=11414836 && $1<=11500000 && $14=3294) print $0;}' /file.txt>/newfile.txt
问题在于第三个条件导致输出中的字段分隔符变为普通空格 ("")。
我做错了什么?
最佳答案
问题是双重的(都在评论中说明):
- 您使用
$14=3294
而不是$14==3294
.这设置了$14
到3294
的值,而不是比较它。 - 当任何字段发生更改(无意中发生)时,
awk
重新计算$0
, 并插入OFS
字段之间。
关于bash - awk 在使用三个 && 条件保存文件时更改字段分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34791036/