Unix 命令 grep,使用正则表达式查找连续单词不共享任何字符的行

问题描述 投票:0回答:1

我收到了一个大文件,其中有许多行具有相同的版本。以下是几行作为示例:

14 23456 12356 1234 15 1456 1245 123456 23456 chrysanthemums
12456 123456 34 1236 123456 1234 45 123456 whitings
14 356 124 6 12345 6 1245 malformations
12456 23456 2356 12345 12345 123456 6 furnishings
2345 16 345 126 345 126 3 12456 3 stoned
245 34 123456 123456 12 346 134 4 245 1245 146 6 gravitate
12456 34 34 356 12356 15 26 13 gastrointestinal
23456 1 234 3 5 12356 lawyer
123456 3456 123456 123456 16 123456 12356 12 46 12456 45 1346 tuba
2356 345 12345 4 4 1 6 gripped
123456 123456 123456 123456 35 12456 123456 123456 23 356 23456 25 replenishes

如你所见,它是数字1-6从小到大并用空格分隔的多种组合。最后有一句话。

我想使用 grep 命令来显示连续“单词”不共享任何字符的行。这可以适用于整行,因为最后一个单词无论如何都不会与数字共享任何字符。

应显示的行示例:

12456 3 4 12356 4 12356 4 12356 4 156 234 cool

不应显示的行的示例:

234 5 12456 13456 136 23456 2346 5 6 345 angry

(第二个单词是“5”,第三个单词也包含“5”...)

请帮助我!

我不知道该怎么做,但我希望使用正则表达式通过单个 grep 命令来完成。

unix grep
1个回答
0
投票
grep -E '\b\w*(\w)\w*\b\s\b\w*\1\w*\b'

找到连续单词的下一个最佳重复字符。

使用

-v
参数从任何输入中删除匹配行:

cat input.txt | grep -vE '\b\w*(\w)\w*\b\s\b\w*\1\w*\b'
© www.soinside.com 2019 - 2024. All rights reserved.