Linux bash命令返回两个string不同的地方

所以,我一直在googlesearch,并在堆栈溢出更详细的search,但我似乎无法find一个简单的方法做到这一点:

我想知道两个string(没有空格)有什么区别,只是打印出了什么样的差别。

例如:

Input 1 > "Chocolatecakeflavour" Input 2 > "Chocolateflavour" Output: "cake" 

我试着用diff和dwdiff,cmp和其他已知的bash命令来popup想法,但我不能得到这个确切的结果。

有任何想法吗?

你可以像使用foldawk一样使用diff

 s="Chocolatecakeflavour" r="Chocolateflavour" diff <(fold -w1 <<< "$s") <(fold -w1 <<< "$r") | awk '/[<>]/{printf $2}' cake 
  • fold -w1是将输入的字符串逐字符(每行一个)
  • diff是为了得到两个列表中的差异(每行1个字符)
  • awk '/[<>]/{printf $2}'是为了从diff'e输出中压缩< OR >并在同一行中打印所有内容

编辑:根据OP的下面的评论如果字符串是在一个文件的不同的行然后使用:

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