差异报告bash脚本

时间:2011-09-20 09:43:44

标签: bash unix

我有一个文字文件,上面写着:

File fileA and fileB differ 
File fileX and fileY differ

我需要一个遍历整个文件的bash脚本,每行解析文件名并执行命令diff fileA fileB > fileA.diff

2 个答案:

答案 0 :(得分:1)

以下命令:

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运行它,您将获得所需的信息。

请注意,这对于包含空格的文件名不适用 - 如果你有这种令人发指的野兽,你需要做一些更智能的解析。

答案 1 :(得分:0)

此命令生成diff命令列表:

[me@home]$ 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来执行生成的命令。

[me@home]$ bash <(sed -n 's/File \(.*\) and \(.*\) differ/diff "\1" "\2" > "\1.diff"/p' infile )