使用 sed 合并 diff 输出

使用 sed 合并 diff 输出

通过将文件与以下内容进行比较,我得到以下输出diff

< IF-Name :STRING: "lns-wall-01-t2"       Index:Gge32: 260
---
> IF-Name :STRING: "lns-wall-01-t2"       Index:Gge32: 25

我需要这个输出:

lns-wall-01-t2 old:260 new:25

我想使用 sed。

答案1

awk

awk '
/^</ { old = $NF }
/^>/ { str = $4 ; gsub(/"/,"",str) ; printf "%s old:%s new:%s\n", str, old, $NF }
' your_files_list_here

答案2

sed '
    /^</{
        # first line formatting
        s/^.*"\(.*\)".*: /\1 old:/
        # append next 2 lines
        N
        N
        # exchange from 2nd line begining till last ":" by "new"
        s/\n---.*: / new:/
        }' "$Rep_Scripts"/diff.txt

答案3

使用不同类型的 diff 输出:

diff -y --suppress-common-lines f1 f2

这为您提供了更加用户友好的格式:

F-Name :STRING: "lns-wall-01-t2"       Index:Gge32: 260   |IF-Name :STRING: "lns-wall-01-t2"       Index:Gge32: 25

diff -y ........ |
perl -nE '/"(.*?)".*?32:\s*(\d+).*32:\s*(\d+)/ 
          and say "$1 old:$2 new:$3"'

相关内容