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 で重複しない携帯電話番号テーブルをバッチ生成する方法のサンプルコード

推薦する

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

MySQL で SQL 文の実行時間を表示する方法

目次1. 初期SQLの準備2.MysqlはSQL文の実行時間をチェックします3. さまざまなクエリの...

MySQL InnoDB インデックス拡張の詳細な説明

インデックス拡張: InnoDB は、プライマリ キー列をそのインデックスに追加することで、各セカン...

アルバムと写真をアルバムに保存するためのWeChatアプレット

私は現在、Xiao Nian Gao に似たビデオおよびツール アプリを開発しています。ユーザーが作...

doctype のマークアップ検証

しかし最近、この方法を使用すると問題が発生することがわかりました。コードを参照してください。コードを...

Iframe の使用を減らすべきいくつかの理由の分析

次のグラフは、100 個の異なる要素で iframe を作成するのにどれくらいの時間がかかるかを示し...

JavaScript ES 新機能ブロックスコープ

目次1. ブロックスコープとは何ですか? 2. ブロックスコープが必要なのはなぜですか? 3. 関数...

WeChat アプレットのカスタム下部ナビゲーション バー コンポーネント

この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...

MySQLトリガートリガー例の詳細な説明

目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...

Linux seqコマンドの使い方の詳しい説明

01. コマンドの概要seq コマンドは整数のシーケンスを生成するために使用されます。 02. コマ...

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

CSS で順序付きリスト項目と順序なしリスト項目のスタイルを設定する方法

順序なしリストでは、順序なしリストのシンボルは各リストの前に表示されるドットです。順序付きリスト o...

CentOS に Redis と MySQL をインストールする

1|0MySQL(MariaDB) 1|11. 説明MariaDB データベース管理システムは My...

HTML テーブルタグチュートリアル (13): 内部境界スタイル属性ルール

RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...