Linuxでテキスト比較を実現するコツを教えます

Linuxでテキスト比較を実現するコツを教えます

序文

コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるときに、変更されたファイルとソース ファイルの違いがわからないことがよくあります。ここでは、テキスト比較を実行するためのテキスト比較ツールが必要です。

経験豊富なプログラマーは、Windows に BeyondCompare という非常に便利なテキスト比較ツールがあることを知っています。しかし、それは有料ソフトウェアであり、多くの一般企業はクラックされたソフトウェアの使用を許可していません。さらに、Windows でのみ利用可能であり、Linux バージョンはありません。

この記事で紹介するテキスト比較方法では、ソフトウェアは必要ありません。Linux コマンドのみが必要です。このコマンドを学習すれば、テキスト比較の方法がわからないという心配はなくなります。

この Linux コマンドは diff コマンドです。

diff は Unix システムにおいて非常に重要なツール プログラムです。これは 2 つのテキスト ファイル間の違いを比較するために使用され、コード バージョン管理の基礎の 1 つです。

まず、基本的なコマンド形式を見てみましょう。

diff [オプション]... ファイル

とても簡単です。しかし、選択肢が多すぎるため、自分の人生に疑問を抱くことになるでしょう。今はそれについて心配せずに、まずは最もよく使われるものを学びましょう。結局のところ、時間は賢く使うべきです。

-b - 行内の空白文字の違いを無視します (例: "Hello World!" は "Hello World!!" と同じとみなされます)

-B — 空白行を無視する

-i - 大文字と小文字の違いを無視

-r —— diff の後にディレクトリを指定すると、サブディレクトリ内のファイルを再帰的に比較します。

テキストを比較する方法を詳しく見てみましょう。

diff コマンドには 3 つの出力形式があります。

(1)通常形式(通常差分)

(2)文脈の違い

(3)統一差分

これら 3 つの出力形式を例を通して詳しく紹介します。たとえば、ファイル ac があるとします。その内容は次のようになります。

ここで、コピーを作成し、bc という名前を付け、3 行目の小文字の「hello」を大文字の「HELLO」に変更します。

(1)通常形式

通常の形式では、オプションを追加する必要はなく、次のように比較するだけです。

実行後の結果は次のとおりです。

上の図の意味を1行ずつ説明してみましょう。

行: 3c3

最初の 3 は、ファイル ac の 3 行目が変更されたことを示し、次の 3 は、ac が変更されて bc の 3 行目になったことを示します。真ん中の c が具体的な変更点です。 c は変更を表し、その他のタイプには削除を表す d や追加を表す a などがあります。

2行目: < hello world!

これは、ac ファイルの 3 行目のコンテンツを削除することを意味します。小なり記号は削除を示します。

3行目: ------

区切り線

4行目: > HELLO world!

これは、bc ファイルに 3 行目の内容を追加することを意味します。ここで、大なり記号は増加を示します。

(2)コンテキスト形式

通常の形式ではプロンプト情報が比較的少ないため、変更された領域をすぐに見つけることができず、変更の詳細を確認するにはファイルを開く必要があることがよくあります。そこで、より多くの情報を提供するために、コンテキスト形式が導入されました。使用コマンドは次のとおりです。

diff -c ac bc

このうち、c は context の略で、文脈を意味します。

上図の出力結果の具体的な意味は次のとおりです。

1 行目と 2 行目は、変更前と変更後のファイルと更新時刻を示します。次の *** 1,4 **** は、ac ファイルの 1 行目から 4 行目までの内容を示します。 hello world の前の感嘆符 (!) は、行が変更されたことを示します。行が削除された場合はマイナス記号 (-)、行が追加された場合はプラス記号 (+) になります。次の行も同様の意味を持ちます。

(3)マージ形式

この形式は通常の形式とコンテキスト形式を組み合わせたもので、git diff でも使用される形式です。この形式を使用するコマンドは次のとおりです。

diff -u ac bc 

上図の出力結果の詳細な意味は次のとおりです。

1 行目と 2 行目は、変更前と変更後のファイルと更新時刻を示します。末尾の -hello world! は元のファイル ac の内容を参照し、 +HELLO world! は bc の内容を参照します。

上記の 3 つの形式に加えて、もう 1 つのより直感的な方法であるサイドバイサイド形式があります。この表示形式のコマンド形式は次のとおりです。

この形式は並列形式で表示され、非常に直感的で明確です。 3行目には「|」記号があり、この行が変更されたことを示しています。また、先頭文字が「<」の場合は、次のファイルの内容が前のファイルより 1 行少ないことを意味し、「>」の場合は、次のファイルの内容が前のファイルより 1 行多いことを意味します。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • 1日1シェルコマンド Linuxテキストコンテンツ操作シリーズ - awkコマンド詳細説明
  • 一日一シェルコマンド Linuxテキストコンテンツ操作シリーズ - cutコマンド詳細説明
  • Linux 正規表現を使用してファイル内のテキストを柔軟に検索する
  • 1日1シェルコマンド Linuxテキスト操作シリーズ - touchコマンドの使い方
  • 1日1シェルコマンド Linuxテキスト操作シリーズ - head、tailコマンド詳細説明
  • 1日1シェルコマンド Linuxテキスト操作シリーズ - diffコマンドの詳しい説明
  • 1日1シェルコマンド Linuxテキストコンテンツ操作シリーズ - grepコマンド詳細説明
  • 1日1シェルコマンド Linuxテキスト操作シリーズ - wcコマンドの詳しい説明
  • LinuxテキストファイルとWINテキストファイルの改行形式変換コマンドの詳しい説明
  • 1日1回のシェルコマンドテキスト操作シリーズ - Linux dd 使用方法チュートリアル

<<:  Windows で MySQL 5.6 を 5.7 にアップグレードする方法

>>:  Vue2.x - アンチシェイクとスロットリングの使用例

推薦する

vue3を使用して人間と猫のコミュニケーションアプレットを実装する

目次序文プロジェクトを初期化するデザインコードの実装オンデマンドロードオーディオを再生録音長押しイベ...

Linux ベースの MySQL マスター スレーブ構成の全プロセスを記録する

mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...

MySQLのバックアップとリカバリの詳細な説明

序文:前回の記事では、さまざまな MySQL ステートメント構文の使用法とユーザー権限に関する知識を...

JavaScript の querySelector メソッドと getElementById メソッドの違いを分析する

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

RGBカラーテーブルコレクション

RGBカラーテーブル色英語名RGB 16色雪255 250 250 #FFFAFAゴーストホワイト2...

MySQL 5.7.17 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.17 winx64解凍版のインストールと設定方法を紹介します。具体...

Linux で固定 IP を設定する方法 (テスト済みで効果的)

まず、仮想マシンを開きます xshell5 を開いて仮想マシンに接続します (より便利です。Linu...

IMG での UserMap の使用例

usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...

MySQL の一般的な SQL ステートメントの概要

1. mysqlエクスポートファイル: SELECT `pe2e_user_to_company`....

JavaScript を使用した数独の完全な実装プロセス

目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...

ReactのEffectListの簡単な分析

目次EffectList コレクション最初のレンダリング時のEffectList EffectLis...

シンプルなjQuery + CSSを使用してカスタムタグタイトルツールチップを作成します

導入シンプルな jQuery + CSS を使用して、ブラウザのデフォルトの動作を置き換えるカスタム...

Ubuntuでネットワークルーティングテーブルを表示する方法

Linux におけるルーティングとルーティング テーブルとは何ですか?ルーティングのプロセスとは、ネ...

Amoeba を使用して MySQL データベースの読み取り/書き込み分離を実装する方法の詳細な説明

MySQL には読み取りと書き込みを分離するアーキテクチャが多数あります。Baidu のそれらのほと...

Linux サーバーでの MySQL インストール情報の表示

mysql のインストール情報を表示します。 #ps -ef | grep mysql usr/bi...