Самый простой способ - использовать perl. У него есть специальные ключи, которые автоматизируют выполнение из командной строки, цикл и печать в конце цикла. В результате команде можно передать просто регулярку или сделать простой однострочник, применяемый к каждой строке файла.
Ключ -e заставляет считать первый аргумент кодом, а не именем файла.
Ключ -n оборачивает этот код в цикл
while(<>) { ... }
Ключ -p добавляет в конец print.
В результате команда
perl -pne 's/foo/bar/'
превращается в аналог скрипта такого содержания:
while(<>) {
s/foo/bar/;
print;
}
Конечно, как нетрудно догадаться, такой вызов аналогичен вызову
sed s/foo/bar/
Таким образом, perl можно использовать почти как sed или awk, только с более богатыми регулярными выражениями и более широкими возможностями программирования.
Например:
some_command|perl -pne 's/foo/bar/g; s/lorem (\d+)/\1 ipsum/g' > output.txt
perl -ne '/([_\w]+)\s*=\s*"(.+)"/ && print "key $1 value $2\n"' /etc/environment