Я предполагаю, что ваш файл выглядит примерно так:
beeyy yeey open iee eey yeefy
funny reenydy jyyee
и называется words2.txt
. Да, содержимое случайное. Это отобразит набор слов, содержащих последовательные ee
и два y
символа :
< words2.txt tr ' ' '\n' | grep 'ee' | grep 'y.*y'
Сначала это гарантирует, что каждое слово находится на отдельной строке с tr
, затем grep
для двух последовательных e
, затем снова grep
для двух (, возможно, не -последовательных )y
. ]. Поскольку каждый grep
является фильтром, конечным результатом является набор слов, содержащих как последовательные ee
, так и два y
.
На моем входе результат:
beeyy
yeey
yeefy
reenydy
jyyee
С GNU sed. Если текущая строка (пространство шаблонов )содержит http
, перейти в конец скрипта(b
). В противном случае выполните поиск и замену.
sed '/http/b; s/\.md#/.html#/' file
Выход:
1.test.html# 2.test.html# 3.http://test.html# 4.https://test.md# 5.http://test.md# 6.test2.html#
Если вы хотите отредактировать файл «на месте», используйте параметр sed -i
.
См.:man sed
perl -pe'/http/ or s/\.md#/.html#/' input.txt > output.txt
perl -pe'/http/||s/\.md#/.html#/' input.txt > output.txt #same
perl -i -pe'/http/||s/\.md#/.html#/' file.txt #edit inplace, changes file.txt
perl -i.bk -pe'/http/||s/\.md#/.html#/' files*.txt #same with backups to.bk files
sed
и awk
великолепны, но в perl
есть все, что у них есть, и даже больше.