2013-11-18 3 views
5

У меня есть две строки, содержащие строки информации. Я хочу получить строки, которые отличаются в двух строках. Пример: String1:diff между двумя строками в bash

"This is line1 
This is line2 
This is line3" 

String2:

"This is line1 
This is linex 
This is line2" 

Результат ожидается:

diff string1 string2 is: 
"This is line3" 

diff string2 string1 is: 
"This is linex" 

ответ

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 
1

Yo у может сделать что-л, как то, что вы хотите, а именно с 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

Смежные вопросы