この答えは、diff
2つの文字列がどのように -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つのファイルをバイト単位で比較する