如何使用 grep 命令從第二列開始搜尋

如何使用 grep 命令從第二列開始搜尋

我有一個文件包含如下字串:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3
siteLevel1.2,Levelv2
Level1.2,Levelv2

我想用它grep來搜尋一個字。我使用了這個指令:

grep -w "Level1.2" file1.txt > result.txt 

輸出是:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3
Level1.2,Levelv2

但我需要 grep 來忽略第一列。我需要在輸出中包含以下內容:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3

請盡可能幫助我使用我自己的命令。我不喜歡新的命令和搜尋方式。我對我的感到滿意,只需要從第二列開始搜尋。

答案1

這是一個簡單的修改我的答案對於您的相關問題:

grep '^[^,]*,.*Level1\.2' myfile.txt

或者更簡單地說:

grep ',Level1\.2' myfile.txt

符合字串中前面的逗號可確保第一個欄位中的任何內容都不符合。

如果存在Level1.20or的可能性Level1.2a,並且您想排除這些情況,那麼您需要添加一個單字分隔符號:

grep ',Level1\.2\b' myfile.txt

請注意,這些情況都不需要egrep(或grep -E)。

答案2

使用-P有正向回顧的選項 (PCRE):

grep -Pw "(?<=,)Level1\.2" file.txt

輸出:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3

相關內容