diffコマンドを使用して2つの文字列を比較しますか?

diffコマンドを使用して2つの文字列を比較しますか?

~によるとhttps://www.computerhope.com/unix/udiff.htm

このdiffコマンドは両方のファイルを分析し、異なる行を印刷します。

同じdiffコマンドを使用して2つの文字列を比較できますか?

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

heyhiとの内容を2つの異なるファイルに保存せずに直接読み取ることはできますか?

ただし、次の例にはheyorというファイルがないため、エラーメッセージが表示されます。hiNo such file or directory

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

ベストアンサー1

diffdiff はい、ファイルのみが比較されるため、2つの文字列でファイルを作成する場合はそれを使用できます。

これを行う簡単な方法は、以下をサポートするシェルでプロセス置換を使用することです。

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

diff2 番目の例では、ファイルに最初の文字列が含まれ、2 番目の文字列が標準入力として提供されます。diff最初の文字列を最初の引数として含むファイルを使用して呼び出されます。 2番目の引数は、-標準入力を読み取る必要があることを示します(2番目の文字列はを介して到達しますprintf)。

おすすめ記事