Linux bash命令,返回两个字符串不同的位置

Linux bash命令,返回两个字符串不同的位置,linux,string,bash,command-line,difference,Linux,String,Bash,Command Line,Difference,所以,我一直在谷歌搜索,也在搜索更多关于堆栈溢出的细节,但我似乎找不到一个简单的方法来做到这一点: 我想知道两个字符串(没有空格)的区别,并简单地打印出确切的区别 例如: 我曾尝试使用diff和dwdiff、cmp以及其他突然出现在我脑海中的已知bash命令来实现这一点,但我无法得到确切的结果 有什么想法吗?你可以将diff与fold和awk一起使用,比如: s="Chocolatecakeflavour" r="Chocolateflavour" diff <(fold -w1 <

所以,我一直在谷歌搜索,也在搜索更多关于堆栈溢出的细节,但我似乎找不到一个简单的方法来做到这一点:

我想知道两个字符串(没有空格)的区别,并简单地打印出确切的区别

例如:

我曾尝试使用diff和dwdiff、cmp以及其他突然出现在我脑海中的已知bash命令来实现这一点,但我无法得到确切的结果


有什么想法吗?

你可以将
diff
fold
awk
一起使用,比如:

s="Chocolatecakeflavour"
r="Chocolateflavour"

diff <(fold -w1 <<< "$s") <(fold -w1 <<< "$r") | awk '/[<>]/{printf $2}'
cake

这是一个困难的问题,取决于差异的大小和输入文本的长度。看看diff、match和patch算法,它们可能会让你走上正确的道路。如果输入1是“foo”,输入2是“bar”,那么输出应该是什么?看起来不错,但对其工作原理的一些解释会很有用。谢谢Tom,我添加了一些解释。不知怎的,出于我的特殊需要,这并不能满足我的需要。(虽然我不知道如何)我的输入1和输入2在文件中的不同行上,所以我使用sed'2q;d'和sed'3q;d’要从文件中得到如下内容:diff--正常,先生,你太棒了:)很高兴知道答案是正确的,你可以点击我答案左上角的勾号,将答案标记为已接受。
s="Chocolatecakeflavour"
r="Chocolateflavour"

diff <(fold -w1 <<< "$s") <(fold -w1 <<< "$r") | awk '/[<>]/{printf $2}'
cake
f=file
diff <(fold -w1 <(sed '2q;d' $f)) <(fold -w1 <(sed '3q;d' $f)) | awk '/[<>]/{printf $2}'
cake