Даны два файла с именами "старые"...
$ cat old
old1
old2
old3
и «новый»
$ cat new
new1
new2
new3
Вы можете создать файл сценария для sed следующим образом:
$ paste old new | while read old new; do printf "s/%s/%s/g\n" "$old" "$new"; done |tee sedfile
s/old1/new1/g
s/old2/new2/g
s/old3/new3/g
И используйте этот файл с sed:
sed -f sedfile mulipath.conf > review-this.conf
Используя стандарт grep
, вы должны предоставить утилите отдельные выражения, с которыми вы хотите сопоставить строки.
grep \
-e 'Horse' \
-e '[[:digit:]]\{1,\} replies' \
-e '[[:digit:]]\{1,\}[[:alpha:]]\{1,\}[[:digit:]]\{1,\}' file
\{n,m\}
заставляет предыдущее выражение соответствовать как минимум n
раз, и не более m
раз. Это означает, что \{1,\}
делает предыдущее выражение совпадающим хотя бы один раз, точно так же, как +
сделал бы это в расширенном регулярном выражении POSIX.
Использование Raku (, ранее известного как Perl _6)
raku -ne '.put if.grep( m:i/ horse / | / <digit>+ <ws> replies / | / <digit>+ <alpha>+ <digit>+ / );'
Пример ввода:
10 replies
Big Horse
123sdf562
replies
1354654
Fat Cat
2 replies
White Horse
Big Cat
Little Dog
5 replies
725vgfvjgh123
Black Horse
Brown Cow
8798jgjh
Пример вывода:
10 replies
Big Horse
123sdf562
2 replies
White Horse
5 replies
725vgfvjgh123
Black Horse
Вот решение с использованием Raku, члена семейства языков программирования Perl -. Работа над Raku (, также известной как Perl6 ), началась в 2000 году и включает в себя существенный пересмотр PCRE (Регулярные выражения ), который некоторые люди находят более удобочитаемым.
В приведенном выше коде используется команда Raku grep
, которая может принимать несколько m/…/
сопоставителей регулярных выражений, в данном случае связанных |
логическим ИЛИ. Обратите внимание, что первый сопоставитель допускает нечувствительное к регистру -сопоставление horse
, поскольку он использует нечувствительное к регистру :i
«наречие» -. Если вы хотите, чтобы совпадало только Horse
, измените соответствующим образом (и удалите наречие :i
).
Конечно, стоит быть осторожным при написании регулярных выражений, и вы должны отметить, что m/ Horse /
будет соответствовать не только Big Horse
, Black Horse
и White Horse
, но и Horse-faced
. Вам могут понадобиться строки, содержащие Horse
, только если им предшествует другое слово с промежуточным пробелом, и в этом случае m/ <alpha>+ <ws> Horse /
может соответствовать всем требованиям.