我有一個文件包含如下字串:
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.20
or的可能性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