我有一个行的文本文件中说:diff报告bash脚本
File fileA and fileB differ
File fileX and fileY differ
我需要一个bash脚本,在整个文件中去,每行解析文件名并执行该命令diff fileA fileB > fileA.diff
我有一个行的文本文件中说:diff报告bash脚本
File fileA and fileB differ
File fileX and fileY differ
我需要一个bash脚本,在整个文件中去,每行解析文件名并执行该命令diff fileA fileB > fileA.diff
以下命令:
awk '/ differ$/ {print "diff "$2" "$4" >"$2".diff"}{}'
会给你你可以运行这样做的脚本。
请参见下面的成绩单:
pax$ echo 'File fileA and fileB differ
hello
File fileX and fileY differ' | awk '
/differ$/ {print "diff "$2" "$4" >"$2".diff"}{}'
diff fileA fileB >fileA.diff
diff fileX fileY >fileX.diff
捕获输出,然后用bash
运行它,你就会有你需要的。
请注意,如果文件名中包含空格,这将无法正常工作 - 如果您拥有这样令人发指的野兽,则需要进行更智能的解析。
谢谢。我现在用这个:read line;做awk'/ differ $/{print“diff”$ 2“”$ 4“>”$ 2“.diff”} {}'; done
此命令生成DIFF命令的列表:
[[email protected]]$ sed -n 's/File \(.*\) and \(.*\) differ/diff "\1" "\2" > "\1.diff"/p' infile
diff "fileA" "fileB" > "fileA.diff"
diff "fileX" "fileY" > "fileX.diff"
可以通过使用process substitution它们传递给bash
执行生成的命令。
[[email protected]]$ bash <(sed -n 's/File \(.*\) and \(.*\) differ/diff "\1" "\2" > "\1.diff"/p' infile)
对你很好!为什么它必须是bash脚本?让我们知道您遇到的解决方案的哪一部分,我们将尽力提供帮助。我们不会为你做你的工作。 – Johnsyweb