文字列の違いを表示

文字列の違いを表示

この答えは、diff2つの文字列がどのように -diffコマンドを使用して2つの文字列を比較しますか?

私は試みる:

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

出力は次のとおりです

1c1
< tring1
---
> string2

これは、2つの文字列が互いに異なることを示します。

2つの文字列のうちどの文字が異なるか、少なくとも違いが始まる最初の文字を知りたいです。どうすればいいですか?

これは長いURLを比較する際に重要です。

git diff私は以下に基づいて他の答えを調べました。ライン内の違い

頑張る

git diff --word-diff --word-diff-regex=. <( printf '%s\n' "tring1" ) <( printf '%s\n' "string2" )

出力は次のとおりです

diff --git a/dev/fd/63 b/dev/fd/62
index 9234a649..b6ce327a 120000
--- a/dev/fd/63
+++ b/dev/fd/62
@@ -1 +1 @@
pipe:[69160538[-6-]{+8+}]

git diff正しく適用したのか、出力をどのように解釈するのかわかりません。

答え1

特定のユースケースでは、文字列をファイルに保存して次のものと比較しますgit diff

$ echo tring1 > f1
$ echo string2 > f2
$ git diff --word-diff --word-diff-regex=. --no-index f1 f2
diff --git a/f1 b/f2
index e8ae123..d704b3b 100644
--- a/f1
+++ b/f2
@@ -1 +1 @@
{+s+}tring[-1-]{+2+}

これは、文字列の先頭に「s」文字が追加され、「1」が「2」になることを示します。

答え2

cmp -b <( printf '%s\n' "tring1" ) <( printf '%s\n' "string2" )
/dev/fd/63 /dev/fd/62 differ: byte 1, line 1 is 164 t 163 s

cmp-2つのファイルをバイト単位で比較する

関連情報