执行awk输出

时间:2011-09-20 10:30:26

标签: bash unix awk

while read line;
do
  awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}';
done < diffs.txt

这将完全按照我的意愿打印命令。如何告诉它执行命令?

3 个答案:

答案 0 :(得分:13)

| bash可以解决问题......

while read line;
do
  awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}' | bash;
done < diffs.txt

答案 1 :(得分:5)

您可以使用“system”命令执行这些任务。

awk '/ differ$/ {system("diff "$2" "$4" > "$2".diff")} diffs.txt

答案 2 :(得分:0)

这个问题的接受答案(由@micheal提出)只是部分正确。它适用于几乎所有情况,除非命令需要创建新终端或伪终端。像'ssh'命令,或'tmux new'..

以下代码也适用于这些情况。

while read line;
do

  $(awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}')
done < diffs.txt

$()是bash命令替换模式。您可以在此处阅读有关Linux Documentation Project中命令替换的更多信息:http://www.tldp.org/LDP/abs/html/commandsub.html