LINUX.ORG.RU

Выборка нужных строк grep

 


0

1

Как сделать выборку ?

Нужно что то типа grep

Только что бы вывод строк происходил если в строке встречаются одновременно все блоки из цифр

00 11 22 33 44 55 66 77 88 99

Независимо от их порядка в строке

Цифры в ряду могут быть расположены по разному

99 55 33 00 77 44 66 11 88 22

Вот пример файла со строками

10110000
11004488
67993344
22662266
11111111
22225555
33331111
88885555
90011111
55005500
22773366
60345588
10109901
74339955
54850099
77441188
43887544

Нужно что бы на выходе получились строки которые содержат в себе все блоки из цифр 00 11 22 33 44 55 66 77 88 99

Вот такое должно быть на выходе

11111111
22225555
33331111
55005500
22773366
77441188



Последнее исправление: DataLife (всего исправлений: 4)
Ответ на: комментарий от DataLife

Нужно что бы выводились все строки в которых одновременно есть значения

00 11 22 33 44 55 66 77 88 99

Независимо от их порядка в этих строках

Все строки которые выглядят так
22557788
00000000
44112288
77887799
22222222
33337777
99999999
11111111
55555555

А остальные строки типа

12348899
66519988
37554433
88335569
76887722

Отбрасывались

DataLife
() автор топика
Ответ на: комментарий от DataLife

В строке 22557788 одновременно нет значений «00 11 22 33 44 55 66 77 88 99». Только «22 55 77 88» — нет «00 11 33 44 66 99».

При этом если надо не все, то почему 12348899 отбрасывается? Ведь в нём тоже есть «88 99».

Сколько надо чтоб было?

Или надо просто чтобы не было непарных цифр?

Я правильно понял, что надо, чтобы строка состояла только из двойных цифр и ничего больше, в этом суть?

Ну тогда всё просто: grep -E '^(00|11|22|33|44|55|66|77|88|99)+$'

cat testfile 
10110000
11004488
67993344
22662266
11111111
22225555
33331111
88885555
90011111
55005500
22773366
60345588
10109901
74339955
54850099
77441188
43887544

grep -E '^(00|11|22|33|44|55|66|77|88|99)+$' testfile
11004488
22662266
11111111
22225555
33331111
88885555
55005500
22773366
77441188

grep -Ev '^(00|11|22|33|44|55|66|77|88|99)+$' testfile
10110000
67993344
90011111
60345588
10109901
74339955
54850099
43887544

Так надо? Или не так опять?

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 4)
Ответ на: комментарий от DataLife

все строки в которых одновременно есть значения

Если ты осилишь написать нормальное текстовое условие, ты его можешь буквально перевести в регулярку, не такую краткую как у @annulen, но вполне рабочую)

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Не, у меня императивный код. Если то, что хочет сделать ТС, и можно выразить одной регуляркой, то мне кажется, что получится адилище.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)