如何使用 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.20或的可能性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

相关内容