Linux でテキストから改行文字を削除する方法

Linux でテキストから改行文字を削除する方法

復帰文字 ( Ctrl+M ) に不安を感じても心配しないでください。それらを排除する簡単な方法がいくつかあります。

「キャリッジ リターン」文字の歴史は古く、タイプライターに紙ローラーを保持するフレームを右に動かし、文字を左側に再度入力できるようにする機構またはレバーがあった時代にまで遡ります。 Windows 上のテキスト ファイルではこれが維持されましたが、Linux システムでは維持されませんでした。この非互換性により、Windows で作成されたファイルを Linux で操作しようとすると問題が発生することがありますが、これは非常に簡単に修正できます。

od ( を使う場合 )オクタルダンプ8進ダンプ) コマンドでは、キャリッジ リターン ( Ctrl+Mでも表されます) 文字が 8 進数 15 として表示されます。 CRLF文字は、Windows テキスト ファイルの行を終了する復帰と改行のシーケンスを表すためによく使用されます。 8 進ダンプに注目すると\r\n表示されます。対照的に、Linux のテキストは改行文字でのみ終了します。

以下はod出力の例です。行内のCRLF文字が強調表示され、その 8 進数表記も表示されます。

$ od -bc テストファイル.txt
0000000 124 150 151 163 040 151 163 040 141 040 164 145 163 164 040 146
  これはテストです
0000020 151 154 145 040 146 162 157 155 040 127 151 156 144 157 167 163
  Windowsからのファイル
0000040 056 015 012 111 164 047 163 040 144 151 146 146 145 162 145 156 <==
  . \r \n それは違います <==
0000060 164 040 164 150 141 156 040 141 040 125 156 151 170 040 164 145
  tthana U nixte
0000100 170 164 040 146 151 154 145 015 012 167 157 165 154 144 040 142 <==
  xtfile \r \nwouldb <==

これらの文字は大きな問題ではありませんが、何らかの方法でテキストを解析し、その存在をエンコードしたくない場合は、混乱が生じることがあります。

テキストから改行を削除する 3 つの方法

幸いなことに、改行文字を簡単に削除する方法がいくつかあります。次の 3 つのオプションがあります。

dos2unix

インストールに問題があるかもしれませんが、 dos2unixおそらく Windows テキストを Unix/Linux テキストに変換する最も簡単な方法です。コマンドは 1 つのパラメータを取ります。 2 番目のファイル名は必要ありません。ファイルは直接変更されます。

$ dos2unix テストファイル.txt
dos2unix: ファイル testfile.txt を Unix 形式に変換しています...

ファイルに含まれる行数に応じて、ファイルの長さが短くなることがわかります。 100 行を含むファイルは、最後の行のみがCRLF文字で終了していないため、99 文字削減される可能性があります。

前に:

-rw-rw-r-- 1 shs shs 121 9月14日 19:11 testfile.txt

後:

-rw-rw-r-- 1 shs shs 118 9月14日 19:12 testfile.txt

多数のファイルを変換する必要がある場合は、一度に 1 つずつ修復しないでください。代わりに、すべてを 1 つのディレクトリに入れて、次のようなコマンドを実行します。

$ find . -type f -exec dos2unix {} \;

このコマンドでは、 findを使用して通常のファイルを検索し、 dos2unixコマンドを実行してファイルを 1 つずつ変換します。コマンド内の{}はファイル名に置き換えられます。実行するときは、ファイルを含むディレクトリにいる必要があります。このコマンドは、テキスト ファイル以外のコンテキストで 8 進数 15 を含むファイル (画像ファイル内のバイトなど) など、他の種類のファイルを破損する可能性があります。

sed

ストリーム エディタsedを使用して、改行を削除することもできます。ただし、2 番目のファイル名を指定する必要があります。以下にいくつか例を挙げます。

$ sed -e “s/^M//” before.txt > after.txt

注意すべき非常に重要な点の 1 つは、表示されている文字を入力しないことです。 ^M入力するには、 Ctrl+Vを押してからCtrl+Mを押す必要があります。 sは代替コマンドです。スラッシュは、検索するテキスト ( Ctrl + M ) と、それを置換するテキスト (ここでは何もなし) を区切ります。

6 六

viを使用して改行を削除することもできます ( Ctrl+M ) が、これは何百ものファイルを開いているわけではなく、おそらく他の変更を加えていることを想定しています。 :と入力してコマンド ラインに入り、次の文字列を入力します。 sedと同様に、コマンド内の^M Ctrl+V^ 、次にCtrl+MMを挿入する必要があります。 %s置換操作であり、スラッシュは削除する文字とそれを置き換えるテキスト (なし) を区切ります。 g (グローバル) はすべての行で実行することを意味します。

:%s/^M//g

要約する

dos2unixコマンドは、おそらくテキストから改行を削除する最も覚えやすく、最も信頼性の高い方法です。他のオプションは使い方が少し難しいですが、基本的な機能は同じです。

出典: https://www.networkworld.com/article/3438857/how-to-remove-carriage-returns-from-text-files-on-linux.html

要約する

上記は、Linux でテキスト内の改行文字を削除するために私が紹介した方法です。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • sed コマンドを使用して文字列を置換する Linux チュートリアル
  • Linux の特殊文字とその機能
  • Linux シェル文字列に組み込まれた一般的な操作 (長さの取得、検索、置換)
  • Linux シェル スクリプトで文字列を連結する方法
  • Linux シェルがユーザーが入力した指定範囲内の単一文字を取得するための 2 つの方法
  • Linux bash 文字列処理百科事典

<<:  Vueはシンプルなショッピングカートの例を実装します

>>:  MySQL で重複しない携帯電話番号テーブルをバッチ生成する方法のサンプルコード

推薦する

MySQLはランダムに一定数のレコードを抽出します

以前は、このような使用シナリオを処理するために rand() で直接 order していましたが、効...

mysql5.7.19 zip 詳細なインストールプロセスと構成

MySQL v5.7.19 正式版(32/64 ビットインストール版および zip 解凍版) 1. ...

MySQLデータベースをアンインストールするための完全な手順

MySQLデータベースを完全にアンインストールするプロセスは次のとおりです。 1. MySQLサービ...

Vueエンジニアがカプセル化しなければならない埋め込み命令の知識のまとめ

目次序文指導の基本フック機能フック関数のパラメータ文章使い方とアイデア成し遂げる汎用性を高める要約す...

ECMAscript の新機能の紹介

目次1. 関数パラメータのデフォルト値1.1 関数パラメータのデフォルト値の指定1.2 分離割り当て...

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

LinuxにMySQLをインストールし、外部ネットワークアクセスを構成する例

設定手順1. DNSが設定されているかどうかを確認するDNSが設定されていない場合は、前の記事を参照...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...

MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する

SQL UNIQUE制約UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します...

上部の固定divは半透明効果に設定できます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

MySQLデータベースでサポートされているストレージエンジンの比較

目次ストレージエンジンMySQL でサポートされているストレージ エンジン同時実行制御ロック粒子をロ...

CSS の位​​置属性 (absolute|relative|static|fixed) の概要と応用

まず、CSS3 Api の position 属性の定義を見てみましょう。 static: 特別な配...

nginx httpモジュールのデータ保存構造の概要

このセクションから、http モジュールの実装原理について説明します。http モジュールで非常に重...

DockerのIDEA構成プロセス

IDEA は Java で最も一般的に使用されている開発ツールであり、Docker は最も人気のある...