如何过滤文件以获取完全由重复数字对组成的行?

如何过滤文件以获取完全由重复数字对组成的行?

我有一个文件,其中的数字开头为

00000000
00000001
00000002
.
.
.
99999999

我想在 bash 中过滤它,以便输出如下:

00000000
00000011
00000022
.
.
11223344
11223355
.
.
99999977
99999988
99999999

答案1

看起来你确实想要筛选文件而不是对其进行排序 - 特别是,只输出那些完全由重复字符或(更具体地说)数字组成的行。例如grep,使用

grep -Ex '((.)\2)+' yourfile

或者使用 PCRE 模式来避免捕获外部组

grep -Px '(?:(\d)\1)+' yourfile

答案2

假设所有数字都有八位数字,并且位于名为 nums.txt 的文件中,则可以使用 awk 字符串函数 substr 来筛选出所有最后两个字符相同的行:

awk '{ if(substr($1, 7, 1)==substr($1, 8, 1)) print $1}' nums.txt

然后你会得到:

    00000000
    00000011
    00000022
    00000055

....

相关内容