Bash 脚本查找两个字符串之间的差异

cli*_*ick 3 bash

鉴于这两个字符串:

"12345"
"1245"
Run Code Online (Sandbox Code Playgroud)

第一个是完整的字符串,第二个是第一个缺少的东西,我希望它返回“3”。

所以再次:

"The ball is red"
"The is red"
Run Code Online (Sandbox Code Playgroud)

我要回“球”

我试过 diff 与:

diff <(echo "12345") <(echo "1245")
Run Code Online (Sandbox Code Playgroud)

但是 diff 没有给出所需的输出。comm 也不做我想要的。

Phi*_*ipp 5

我认为这comm是正确的命令:

comm -23 <(tr ' ' $'\n' <<< 'The ball is red') <(tr ' ' $'\n' <<< 'The is red')
Run Code Online (Sandbox Code Playgroud)

或更灵活:

split_spaces() { tr ' ' $'\n' <<< "$1"; }
split_chars() { sed $'s/./&\\\n/g' <<< "$1"; }
comm -23 <(split_spaces 'The ball is red') <(split_spaces 'The is red')
comm -23 <(split_chars 12345) <(split_chars 1245)
Run Code Online (Sandbox Code Playgroud)