在Bash中比较两个字符串的差异

6
我可以帮助您进行翻译。以下是您需要翻译的内容:

我有两个包含信息行的字符串。我想获取这两个字符串中不同的行。 例如: 字符串1:

"This is line1
This is line2
This is line3"

字符串2:

"This is line1
This is linex
This is line2"

期望的结果:

diff string1 string2 is:
"This is line3"

diff string2 string1 is:
"This is linex"
2个回答

7
你可以使用 comm 命令:
$ str1="This is line1
> This is line2
> This is line3"
$ str2="This is line1
> This is linex
> This is line2"

$ comm -23 <(echo "$str1" | sort) <(echo "$str2" | sort)
This is line3
$ comm -23 <(echo "$str2" | sort) <(echo "$str1" | sort)
This is linex

2
你可以使用 diff 来实现你想要的功能。
$ str1="This is line1\nThis is line2\nThis is line3"; str2="This is line1\nThis is linex\nThis is line2";
$
$ diff -y -W 30 --suppress-common-lines <(echo -e $str1) <(echo -e $str2)
              > This is linex
This is line3 <

受这个问题和答案的启发:Bash string difference

,本文将介绍如何在Bash中比较两个字符串的不同之处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接