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

use*_*110 2 awk grep

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

ON,111111,TEN000812,Super,7483747483,767,Free
ON,262762,BOB747474,SuperMan,4347374,676,Free
ON,454644,FRED84848,Super Man,65757,555,Free
Run Code Online (Sandbox Code Playgroud)

我需要完全匹配第四列中的值。因此,如果我正在搜索“Super”,我需要它仅返回带有“Super”的行。

ON,111111,TEN000812,Super,7483747483,767,Free
Run Code Online (Sandbox Code Playgroud)

同样,如果我正在寻找“超人”,我需要返回确切的行。

ON,454644,FRED84848,Super Man,65757,555,Free
Run Code Online (Sandbox Code Playgroud)

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

grep -i "Super" file.txt
Run Code Online (Sandbox Code Playgroud)

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

ON,111111,TEN000812,Super,7483747483,767,Free
ON,262762,BOB747474,SuperMan,4347374,676,Free
ON,454644,FRED84848,Super Man,65757,555,Free
Run Code Online (Sandbox Code Playgroud)

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

awk '$4==Super' file.txt
Run Code Online (Sandbox Code Playgroud)

我仍然得到这样的输出:

ON,111111,TEN000812,Super,7483747483,767,Free
ON,262762,BOB747474,SuperMan,4347374,676,Free
Run Code Online (Sandbox Code Playgroud)

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

Rav*_*h13 6

您很接近,或者我应该说非常接近,只需在您的解决方案中将字段分隔符作为逗号就可以了。

awk 'BEGIN{FS=","} $4=="Super"' Input_file
Run Code Online (Sandbox Code Playgroud)

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

或者,如果您想提及要作为awk变量进行比较的值,请尝试以下操作。

awk -v value="Super" 'BEGIN{FS=","} $4==value' Input_file
Run Code Online (Sandbox Code Playgroud)