比较两个文件抽象模式但显示它

时间:2013-11-18 13:44:45

标签: sed awk compare diff

我想使用diff或soemthing比较两个文件。文件中的每一行都以“line_x”开头。 文件:

line_1: This is line1
line_2: This is line2

....

我想比较没有line_x的文件。像这样:

  

diff<(sed'/ line /,/:/ g'diff1)<(sed'/ line /,/:/ g'diff2)

但是,我打印差异,我想插入不同的确切line_x。 用awk或其他东西可以做到这一点? 感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

awk -f cmp.awk file1.txt file2.txt

其中file1.txtfile2.txt是您的输入文件,而cmp.awk

NR==FNR {
    $1=""
    b[FNR]=$0
    next
}
{
    $1=""
    if ($0!=b[FNR]) {
        printf "Line: %d\n", FNR
        printf "  File 1: %s\n", b[FNR]
        printf "  File 2: %s\n", $0
    }
}

如果两个文件中的行没有排序,您可以尝试:

NR==FNR {
    a=$1;   $1=""
    b[a]=$0
    next
}
{
    a=$1; $1=""
    if ($0!=b[a]) {
        printf "%s\n", a
        printf "  File 1: %s\n", b[a]
        printf "  File 2: %s\n", $0
    }
}