grep - 标记行中的相同数字 bash

grep - 标记行中的相同数字 bash

我想标记相同的数字,可以重复3次。我的命令是:

grep -E '[[:digit:]]{2,3}' file

标记每个数字,但我想要相同的数字。

输入:

11111 222 33
2223345678912345678901234
5

输出:

11111 222 33
2223345678912345678901234
5

我想要:

11111 222 33<-mark 222
2223345678912345678901234<-mark 222

答案1

我发现你可以使用以下命令来 grep 一个文件中的 3 个连续数字:

grep "\([0-9]\)\\1\\1" chatlog.txt

这将标记所有具有 3 个连续相同数字的行。\\1匹配第一组中匹配的字符,在本例中为数字。

因此,要匹配 4 个相同的数字,您需要:

grep "\([0-9]\)\\1\\1\\1" chatlog.txt

您可以用更灵活的方式来定义它:

grep "\([0-9]\)\(\\1\)\{2,3\}"

上述语句将匹配一系列连续的 3 或 4 个相同数字。请注意,第一组匹配第一个数字。之后,您将再匹配该组两次或三次。

因此给出输入:

one: 1
two: 11
three: 111
four: 1111

以下命令:

grep -r "\([0-9]\)\(\\1\)\{2,3\}" test.txt

返回:

three: 111
four: 1111

相关内容