Я хочу начать расчистку со строк, которые имеют CK
в конце строки, и прекратить сопоставление, когда строка имеет D
в конце. Я пытался grep "$CK" "$D" file..txt
, но это не сработало.
Входные данные:
kkkkkkkkkkk
jjjjjjjjjjjjjjjjjj
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
GGGGGGGGGGGGGG
GGGGGGGGGGGGGG
Желаемый вывод:
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
text-processing
sed
awk
grep
Рана Хан
источник
источник
awk '/\/CK/,/\/D/' input
Если вы используете BSD
grep
(не поддерживает Perl Regex Param-P
), вот обходной путь:Это работает путем объединения всех строк (замены новых строк
_
символом), проверки шаблона в одну строку и расширения строк до исходного состояния.Если вы используете GNU
grep
, вы можете добиться многострочного соответствияgrep
, но вам нужно использовать perl-regexp дляgrep
(-P
), как упомянуто в другом ответе . Вы все еще можете установить GNUgrep
на MacOS черезbrew install grep
и использоватьggrep
вместо этого.В качестве альтернативы вы можете использовать
pcregrep
который поддерживает многострочные шаблоны (-M
).Вы также можете использовать
ex
команду, например:источник