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 - アンチシェイクとスロットリングの使用例

推薦する

Yahooのフロントエンド最適化に関する35のルールについての簡単な説明

概要: 仕事でも面接でも、Web フロントエンドのパフォーマンスを最適化することは非常に重要です。で...

Dockerでrabbitmqをデプロイする際に発生した2つの問題

1. 背景DockerでRabbitMQをデプロイする際に、次の2つの問題が発生します。問題1: ス...

ハイパーリンクの幅と高さを直接設定できない問題の解決策

幅と高さを直接使用することはできません。 display:block; または display:in...

Web ページのスクロール バーが右側に設定されているのはなぜですか?

私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...

HTML テキストフォーマットの簡単な例 (詳細な説明)

1. テキストの書式設定: この例では、HTML ファイル内のテキストを書式設定する方法を示します...

Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。

かなり前に実装された機能ですが、クリックすると選択したメニュー項目の背景色が白くなることに気付きまし...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

MySQL 8で追加された3つの新しいインデックスは、非表示、降順、関数です。

目次MySQL 8 の隠しインデックス、降順インデックス、関数インデックス1. 隠しインデックス1....

js SMS認証コード入力ボックスを手動で実装する

序文この記事では、私が手動で実装したフロントエンドの一般的な SMS 認証コード入力コンポーネントと...

CSS3で跳ねるボールのアニメーションを実現

私は通常、大手ウェブサイトの特別ページや製品リリースページを訪問するのが好きです。なぜなら、たくさん...

Chrome をクラッシュさせる CSS コードの行

一般的な CSS コードでは、UI レイアウトや互換性に関して軽微な問題が発生するだけです。しかし、...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...

React+tsは二次リンク効果を実現します

この記事では、二次リンク効果を実現するためのReact+tsの具体的なコードを参考までに共有します。...

MySQL/MariaDB で完全な Unicode をサポートする方法

目次utf8mb4 の紹介UTF8 バイト数超過エラーutf8mb4 サポートデフォルトの文字エンコ...