Вам может потребоваться опция -i для xargs (подробности смотрите на странице man). Это по существу заменяет {}
шаблоном и запускает команду один раз для шаблона. Таким образом, он будет запускать sed для файла один раз для каждого шаблона; Вы должны иметь это в виду при создании шаблонов.
user@host [/tmp]$ cat patterns
a
[pd]ie
user@host [/tmp]$ cat file
hat
cherry pie
die alone
eat cake
user@host [/tmp]$ cat patterns | xargs -i sed 's/{}/moo/' file
hmoot
cherry pie
die moolone
emoot cake
hat
cherry moo
moo alone
eat cake
В качестве альтернативы, вы можете использовать что-то другое для динамической сборки сценария sed из файла шаблонов. Например, вы можете использовать sed в файле шаблона, чтобы применить их все за один проход к файлу. :)
user@host [/tmp]$ sed 's|^|s/|;s|$|/moo/;|' patterns | tee patterns.sed
s/a/moo/;
s/[pd]ie/moo/;
user@host [/tmp]$ sed -f patterns.sed file
hmoot
cherry moo
moo moolone
emoot cake