执行awk输出

Mic*_*ael 3 unix bash awk

while read line;
do
  awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}';
done < diffs.txt
Run Code Online (Sandbox Code Playgroud)

这将完全按照我的要求打印命令.如何告诉它执行命令?

Mic*_*ael 13

| bash 诀窍......

while read line;
do
  awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}' | bash;
done < diffs.txt
Run Code Online (Sandbox Code Playgroud)

  • 除非脚本是专门的 Bash 脚本,否则你最好使用 `sh`。此外,出于经济性和可理解性的原因,我会在“完成”之后放置管道。 (2认同)
  • 实际上`while'循环也是不必要的.`awk'/ different $/{printf("diff \"%s \"\"%s \"> \"$ 2 \".diff",$ 2,$ 4,$ 2)}'diffs.txt | sh` (2认同)

Chr*_*ris 5

您可以使用"system"命令执行这些类型的任务.

awk '/ differ$/ {system("diff "$2" "$4" > "$2".diff")} diffs.txt
Run Code Online (Sandbox Code Playgroud)