У меня есть файл с номерами, начинающимися с
00000000
00000001
00000002
.
.
.
99999999
. Я хочу отфильтровать его в bash, чтобы результат был таким:
00000000
00000011
00000022
.
.
11223344
11223355
.
.
99999977
99999988
99999999
Предполагая, что все ваши номера состоят из восьми цифр и находятся в файле с именем nums.txt, вы можете использовать строковая функция awk для substr для фильтрации всех строк, последние два символа которых совпадают:
awk '{ if(substr($1, 7, 1)==substr($1, 8, 1)) print $1}' nums.txt
Затем вы получите:
00000000
00000011
00000022
00000055
....
Похоже, вы действительно хотите фильтровать файл, а не сортировать его - в частности , чтобы вывести только те строки, которые полностью состоят из пар повторяющихся символов или (более конкретно) цифр. Так, например, используя grep
, что-то вроде
grep -Ex '((.)\2)+' yourfile
или используя режим PCRE, чтобы избежать захвата внешней группы
grep -Px '(?:(\d)\1)+' yourfile