Вы можете создать файл со списком таких команд sed
, как этот, в файле с именем commands.sed
:
s|cat|cats|g
s|dog|dogs|g
s|person|people|g
и запустить его на некотором входе с помощью:
echo "House mouse cat dog person dog person" | sed -f commands.sed
и он заменит cat
на cats
, dog
на dogs
и person
на people
, создавая:
House mouse cats dogs people dogs people
Итак, мы хотим превратить ваш файл с подстановками в такой командный файл - используя sed
! Итак, если ваш файл замен subs.txt
содержит такие строки с двумя словами в каждой строке, разделенными табуляцией:
cat cats
dog dogs
person people
Это будет:
sed -e 's/^/s|/' -e $'s/\t/|/' -e 's/$/|g/' subs.txt > commands.sed
, а затем вы можно применить его с помощью:
sed -f commands.sed SomeFile
Вместо того, чтобы создавать файл с командами, мы можем запустить process substitution
, как это, чтобы динамически генерировать их, и сделать все это в одном go с:
echo "House mouse cat dog person dog person" | sed -f <(sed -e 's/^/s|/' -e $'s/\t/|/' -e 's/$/|g/' subs.txt)