我有一个包含以下字符串的文件:
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