Многие оболочки поддерживают подстановку команд, так что, например,
p=$(awk '{ print $1,$3 }' filename)
захватит вывод команды awk '{ print $1,$3 }' filename
в переменную p
. Обратите внимание, что ваш cat
здесь лишний: awk
может читать непосредственно из filename
.
Однако я подозреваю, что на самом деле вы хотите обработать последовательные строки вывода awk
и разобрать их на отдельные переменные. Если это так, вы можете сделать что-то вроде
awk '{print $1,$3}' filename | while read -r p1 p2; do grep -F "$p1" otherfile | grep -F "$p2"; done
для поиска строк в otherfile
, которые соответствуют обоим полям $1
и $3
из filename
.
Параметр для использования нескольких выражений с sed — -e
, а не-E
:
sed -e "s/:= *[0-9]+\.[0-9]+ *$/:= $var/g" -e "s/:= [0-9]+ *$/:= $var2/g"
Из руководства (, предполагая, что GNU использует тег linux ):
'-e SCRIPT'
'--expression=SCRIPT'
Add the commands in SCRIPT to the set of commands to be run while processing the input.
-E
предназначен для использования расширенных регулярных выражений.