Используя diff
или com
или независимо от того, что Вы хотите:
diff <(echo "$string1" ) <(echo "$string2")
FAQ Bash Greg: Замена Процесса
или с именованным каналом
mkfifo ./p
diff - p <<< "$string1" & echo "$string2" > p
FAQ Bash Greg: Работа с Именованными каналами
Именованный канал также известен как FIFO
-
, самостоятельно для стандартного входа.
<<<
"здесь строка".
&
похож ;
, но помещает его в фоновом режиме
Напоминает мне об этом вопросе: , Как может Вы разность два конвейера в Bash?
, Если Вы находитесь на сессии удара, Вы могли бы сделать a:
diff <cmd1 <cmd2
diff <(foo | bar) <(baz | quux)
с <
создающие анонимные именованные каналы - управляемый ударом - таким образом, они создаются и уничтожаются автоматически, в отличие от временных файлов.
Поэтому, если Вам удается изолировать Ваши две различных строки как часть команды (grep, awk, sed...), можно сделать - например - что-то как:
diff < grep string1 myFile < grep string2 myFile
(если Вы предполагаете Вас, имеют в Ваших строках файла как string1=very_complicated_value
и string2=another_long_and_complicated_value'
: не зная внутренний формат Вашего файла, я не могу рекомендовать точную команду)
Я предпочитаю функцию cmp
и Process Substitution удара:
$ cmp -bl <(echo -n abcda) <(echo -n aqcde)
2 142 b 161 q
5 141 a 145 e
Высказывание относительно положения 2, b происходит для первого, но q для второго. В положении 5 происходит другое различие. Просто замените те строки переменными, и Вы сделаны.