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.0+vant3.0の迅速なプロジェクト構築の実装

目次1. プロジェクトの構築2. Vue3 体験 + Vant 紹介2020年9月18日にvue.j...

Linuxでmysqlの定期的なコールドバックアップを実装するためにmysqldump+expect+crontabを使用するアイデアの詳細な説明

目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...

MySQL はパスワード強度の検証をオフにします

パスワード強度検証について: [root@mysql mysql]# mysql -uroot -p...

jQuery を使用して、iframe 下の無効なページ アンカー ポイントの問題を修正する

適用シナリオ: iframe ページにスクロール バーがなく、親ウィンドウにスクロール バーが表示さ...

Sysbench の MySQL ベンチマーク プロセスの分析

序文1.ベンチマークは、テスト オブジェクトのクラスの特定のパフォーマンス指標の定量的、再現可能、比...

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

MySQL 5.7.16 のインストールと設定方法のグラフィック チュートリアル (Ubuntu 16.04)

Ubuntu 16.04 に MySQL 5.7 をインストールするにはどうすればいいですか?メイ...

Reactにおけるフックの一般的な使用法

目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...

MySQL 5.7 でルートパスワードを変更する方法に関するチュートリアル

バージョンアップデートにより、元のユーザーのパスワードフィールドがauthentication_st...

TomcatとJDKのバージョンの対応と各Tomcatバージョンの機能

Apache Tomcat は、Java Servlet および Java Server Pages...

LinuxでPythonの組み込みバージョンを削除する手順の詳細な説明

大きな落とし穴、Linuxシステムに付属するPythonのバージョンを簡単に削除しないでください1....

クロスブラウザローカルストレージⅠ

原文: http://www.planabc.net/2008/08/05/userdata_beh...

MySQL データベース面接に必須の 3 つのログの紹介

目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...

MySQL の組み込み関数 find_in_set を使用した効率的なあいまい検索の詳細な説明

一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...