我有一个类似下面的文件(示例文件)。
10,鲍勃,ELEC,鲍勃,英雄,,
20,鲍勃,机甲,史蒂夫,六月,,, yumm
30,鲍勃,INSTR,鲍勃,森
40,鲍勃,复合,亚历克斯,六月,SYU ,,
50,鲍勃,化学,鲍勃,鲍勃,安瑟尼
我需要字符串Bob在每行中出现多次的所有行。
此外,如果它不是如上所述的分隔文件,并且如果它是如下文件那么我将如何得到特定字符串重复的行(在这种情况下Bob )
10,鲍勃,elecBob,英雄,,
20,鲍勃,机甲,史蒂夫,六月|||鲍勃,yummBob
30,BobExtarvagnaxz |||
我尝试了几种选择,但没有达到完全要求。
由于 Chethan
答案 0 :(得分:1)
输出中以20开头的行与输入中的20不相同。 为什么30,50输入不输出?他们有不止一个“鲍勃”。
无论如何,试试这条快速而又脏的线是否适用于你。
awk '/.*(Bob).*(Bob).*/' yourFile
答案 1 :(得分:1)
您可以使用正则表达式。
如果您有逗号分隔文件,您可以使用以下命令查找一个Bob,然后是另一个Bob:
grep -E "(^|,)Bob,.*Bob(,|$)" file.txt
如果文件没有分隔,您可以使用更通用的正则表达式,如:
grep -E "^.*Bob.*Bob.*$" file.txt
但是,如果您有像Bob,steve,Bobby
这样的行,这可能无法正常工作,因为它不知道如何区分Bob和Bobby。
答案 2 :(得分:1)
这将删除任何没有多个Bobs的行。
sed '/Bob.*Bob/!d' filename
答案 3 :(得分:1)
以下内容将打印出在同一行重复任何3个或更多字符串的每一行(如果要匹配的字符串应该更长,只需在括号内插入更多的点):
$ grep '\(....*\).*\1' testdat
给出以下输入文件:
hahaAliAlihehe
Ali ist allein
Ali, Alibaba, Alimente
Bert, Bertha, Bertram
Holger, V'ger, Ludger
Susi,Bernd,Holger
打印:
hahaAliAlihehe
Ali, Alibaba, Alimente
Bert, Bertha, Bertram
Holger, V'ger, Ludger