Awk-Grep-匹配文件中的确切字符串

时间:2020-07-23 19:07:47

标签: awk grep

我有一个看起来像这样的文件

ON,111111,TEN000812,Super,7483747483,767,Free
ON,262762,BOB747474,SuperMan,4347374,676,Free
ON,454644,FRED84848,Super Man,65757,555,Free

我需要完全匹配第四列中的值。因此,如果我要搜索“超级”,则只需要返回“超级”即可。

ON,111111,TEN000812,Super,7483747483,767,Free

同样,如果我要寻找“超人”,则需要返回该行。

ON,454644,FRED84848,Super Man,65757,555,Free

我尝试使用grep,但是grep将匹配所有包含Super的实例。因此,如果我这样做:

grep -i "Super" file.txt

它返回所有行,因为它们都包含“超级”

ON,111111,TEN000812,Super,7483747483,767,Free
ON,262762,BOB747474,SuperMan,4347374,676,Free
ON,454644,FRED84848,Super Man,65757,555,Free

我也对awk感到厌倦,并且我相信我已经接近了,但是当我这样做时:

awk '$4==Super' file.txt

我仍然得到这样的输出:

ON,111111,TEN000812,Super,7483747483,767,Free
ON,262762,BOB747474,SuperMan,4347374,676,Free

我已经待了几个小时了,在这一点上任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

您很亲密,或者我应该说很亲密,只需将字段定界符放在解决方案中以逗号开头,就可以了。

awk 'BEGIN{FS=","} $4=="Super"' Input_file

在与具有字符串值的第4个字段进行比较时,OP尝试进行的另一件事是,字符串应包装在"

或者,如果您想将要比较的值作为awk变量,然后尝试遵循。

awk -v value="Super" 'BEGIN{FS=","} $4==value' Input_file

答案 1 :(得分:3)

您实际上很亲密,可以尝试:

awk -F, '$4=="Super" {print}' file.txt

我发现此表格更容易掌握。虽然比@ RavinderSingh13稍长

-F是字段分隔符,在这种情况下为逗号
接下来你有一个条件,接着是行动
条件是检查第四个字段是否具有字符串Super
如果找到了字符串,请打印出来