linuxコマンド-テキスト比較comm、diff、patch
2167 ワード
本文のオリジナルは公衆番号に先発します:プログラミングの3分
今日は3つのテキスト比較のコマンドを学びました.
comm
今日は3つのテキスト比較のコマンドを学びました.
comm
commコマンドは同じテキストを比較します$ cat char
a
b
c
$ cat chardiff
a
d
c
例えば、私は2つのファイルchar
とchardiff
上記のように、少し違うので、このコマンドで出力できます.$ comm char chardiff
a
b
c
d
c
以上のように、出力がめちゃくちゃに見えるが、彼は2つのファイルを列ごとにそれぞれ特有の出力を出力し、最後に共有したものを出力しただけだ.したがってパラメータ-1
は1列目、つまり2列目と3列目を出力しないことを意味する.-2
1列目と3列目を出力-3
1、2列目を出力する.パラメータが廃れていて、苦労しているように見えます.$ comm -1 char chardiff
a
d
c
$ comm -12 char chardiff
a
comm
コマンドがバカで、既にソートされているデータに対してのみ、ソートされていなければabc
とacb
と認識されるa
同様、しばらくは比較的良い使用シーンとは思わなかった.
diff
使用git
のはすべて知っていますgit diff
どれだけ使いやすいか、可視化ページほど直感的ではありませんが、迅速で便利なことを意味します.次の例ですがchar
ファイル内容はabc
chardiff2
内容はbcd
$ diff -c char chardiff2
*** char 2019-09-16 21:40:47.000000000 +0800
--- chardiff2 2019-09-17 00:38:52.000000000 +0800
***************
*** 1,3 ****
- a
b
c
--- 1,3 ----
b
c
+ d
直接プラスした-c
パラメータはより直感的なため、興味があれば自分で消してみる-c
効果を見てみましょう.*** 1,3 ****
および--- 1,3 ----
1から3行を表し、-
削除行を表し、+
増加行を表し、!
変更行を表す.diff
2つのファイルの違いを一時的に比較できるだけでなく、次のコマンドと組み合わせることが本当の用途です.
パッチ
通常、数百万行のプロジェクトを更新するとき、数行だけ変化があれば、すべてパッケージ化することは不可能です.それは大きすぎて、すべてコピーしても意味がありません.最大の問題は人力が比較しにくいことです.その前にパッチファイルを生成する必要があります$ diff -Naur folder1 folder2 > diff_file
$ ls folder1
char chardiff
$ ls folder2
char chardiff ip
パッチファイルを入手diff_file
その後、foler1
バージョンそっくりの場所に送信すれば更新に成功!$ cd folder1
$ patch < diff_file
$ patch < diff_file
patching file chardiff
patching file ip
ロールバックする場合は-R
パラメータを追加$ patch -R < diff_file
patching file chardiff
patching file ip
パラメータは以下の通り-p num
:フォルダをいくつか無視-E
:空のファイルが見つかったら削除-R
:パッチ適用をキャンセル
$ cat char
a
b
c
$ cat chardiff
a
d
c
$ comm char chardiff
a
b
c
d
c
$ comm -1 char chardiff
a
d
c
$ comm -12 char chardiff
a
使用
git
のはすべて知っていますgit diff
どれだけ使いやすいか、可視化ページほど直感的ではありませんが、迅速で便利なことを意味します.次の例ですがchar
ファイル内容はabc
chardiff2
内容はbcd
$ diff -c char chardiff2
*** char 2019-09-16 21:40:47.000000000 +0800
--- chardiff2 2019-09-17 00:38:52.000000000 +0800
***************
*** 1,3 ****
- a
b
c
--- 1,3 ----
b
c
+ d
直接プラスした
-c
パラメータはより直感的なため、興味があれば自分で消してみる-c
効果を見てみましょう.*** 1,3 ****
および--- 1,3 ----
1から3行を表し、-
削除行を表し、+
増加行を表し、!
変更行を表す.diff
2つのファイルの違いを一時的に比較できるだけでなく、次のコマンドと組み合わせることが本当の用途です.パッチ
通常、数百万行のプロジェクトを更新するとき、数行だけ変化があれば、すべてパッケージ化することは不可能です.それは大きすぎて、すべてコピーしても意味がありません.最大の問題は人力が比較しにくいことです.その前にパッチファイルを生成する必要があります$ diff -Naur folder1 folder2 > diff_file
$ ls folder1
char chardiff
$ ls folder2
char chardiff ip
パッチファイルを入手diff_file
その後、foler1
バージョンそっくりの場所に送信すれば更新に成功!$ cd folder1
$ patch < diff_file
$ patch < diff_file
patching file chardiff
patching file ip
ロールバックする場合は-R
パラメータを追加$ patch -R < diff_file
patching file chardiff
patching file ip
パラメータは以下の通り-p num
:フォルダをいくつか無視-E
:空のファイルが見つかったら削除-R
:パッチ適用をキャンセル
$ diff -Naur folder1 folder2 > diff_file
$ ls folder1
char chardiff
$ ls folder2
char chardiff ip
$ cd folder1
$ patch < diff_file
$ patch < diff_file
patching file chardiff
patching file ip
$ patch -R < diff_file
patching file chardiff
patching file ip