Linux

使用 diff 命令比較兩個字元串?

  • July 25, 2021

根據https://www.computerhope.com/unix/udiff.htm

diff命令分析兩個文件並列印不同的行。

我可以使用相同的diff命令來比較兩個字元串嗎?

$ more file*
::::::::::::::
file1.txt
::::::::::::::
hey
::::::::::::::
file2.txt
::::::::::::::
hi
$ diff file1.txt file2.txt 
1c1
< hey
---
> hi

我可以直接讀取它,而不是將其內容保存到兩個不同的文件中hey嗎?hi

順便說一句,在下面的範例中沒有命名hey或文件hi,這就是我收到No such file or directory錯誤消息的原因。

$ diff hey hi
diff: hey: No such file or directory
diff: hi: No such file or directory

是的,如果你用它們製作文件,你可以diff在兩個字元串上​​使用,因為diff只會比較文件。

一種快捷方式是在支持這些的 shell 中使用程序替換:

diff <( printf '%s\n' "$string1" ) <( printf '%s\n' "$string2" )

例子:

$ diff <( printf '%s\n' "hey" ) <( printf '%s\n' "hi" )
1c1
< hey
---
> hi

在其他貝殼中,

printf '%s\n' "$string1" >tmpfile
printf '%s\n' "$string2" | diff tmpfile -
rm -f tmpfile

在第二個範例中,一個文件包含第一個字元串,而第二個字元串diff在標準輸入中給出。 diff使用包含第一個字元串作為其第一個參數的文件呼叫。作為它的第二個參數,-表示它應該讀取標準輸入(第二個字元串將通過 到達printf)。

引用自:https://unix.stackexchange.com/questions/582796