Linux bash command that returns where two strings differ -
Linux bash command that returns where two strings differ -
so, i've been googling around, , searching in more detail on stack overflow, can't seem find easy way of doing this:
i want know in way 2 strings (without whitespace) differ, , print exact difference is.
e.g.:
input 1 > "chocolatecakeflavour" input 2 > "chocolateflavour" output: "cake"
i've tried doing diff , dwdiff, cmp, , other known bash commands popped mind, couldn't exact result.
any ideas?
you can utilize diff
fold
, awk
ths:
s="chocolatecakeflavour" r="chocolateflavour" diff <(fold -w1 <<< "$s") <(fold -w1 <<< "$r") | awk '/[<>]/{printf $2}' cake
fold -w1
split input string character character (one in each line) diff
difference in both lists (1 char in each line) awk '/[<>]/{printf $2}'
suppress <
or >
diff'e output , print in same line edit: per op's comments below if strings in different lines of file use:
f=file diff <(fold -w1 <(sed '2q;d' $f)) <(fold -w1 <(sed '3q;d' $f)) | awk '/[<>]/{printf $2}' cake
linux string bash command-line difference
Comments
Post a Comment