Как исключить указанные символы из строки? - PullRequest
0 голосов
/ 24 октября 2018

Я фильтрую текстовый файл с номерами и именами. У меня есть эти команды

sed -En 'h;:a;s/^(.)\1+//;ta;/^$/{x;p}' 

Я пытался отредактировать эту команду и искал, как, но я не получил требуемый результат.

Как исключить первый или второй символ в строке из последовательных дубликатов?Если у меня есть входные данные, например:

1122
133555
1366622
256651155
311144

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

133555 (only the first character is not consecutively repeated)
1366622 (only the first and the second characters are not consecutively repeated).
311144 (only the first or the second character is not consecutively repeated)

Приведенная выше команда должна печатать только строки со всеми последовательными дубликатами два или более раз.

1 Ответ

0 голосов
/ 24 октября 2018

Я не уверен, правильно ли я понимаю, для чего вы собираетесь, но это даст вам ожидаемые результаты для ваших выборочных данных.

sed -nE '/^(.)\1/!{/^(.|..)((.)\3+)+$/p}' 

Пояснение

/^(.)\1/  # matches lines starting with two identical characters
!{...}    # run this block when the preceding pattern does not match
/^(.|..)((.)\3+)+$/p   # consecutive duplicates (but first/second char doesn't have to belong to sequence    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...