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

推薦する

js 正確な計算

var numA = 0.1; var numB = 0.2; アラート(numA + numB)...

デプロイから基本操作までDocker Swarm

Docker SwarmについてDocker Swarm は次の 2 つの部分で構成されます。 D...

実用的な MySQL + PostgreSQL バッチ挿入更新 insertOrUpdate

目次1. 百度百科事典1. MySQL 2. PostgreSQL 3. MySQL に対する Po...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...

CSS3 で背景ぼかしを実現する 3 つの方法 (要約)

1. 通常の背景ぼかしコード: <スタイル> html, 体 { 幅: 100%; 高...

HTML は Double 11 クーポン取得を実装します (クーポン取得ページを開く時間を設定します)

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...

テキストエリアのテキスト入力領域に改行を実装する方法

textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...

JavaScript でオブジェクトのプロパティを削除する方法

1. 削除delete は、オブジェクトのプロパティを残さずに削除する唯一の方法ですが、その「代替」...

レスポンシブ Web をデザインするにはどうすればいいですか?レスポンシブウェブデザインのメリットとデメリット

最近レスポンシブ デザインについて学んでいて、これについていくつか整理してみました。写真の一部はイン...

IE5.0以降のHTCコンポーネントの定義の概要

Microsoft IE 5.0 がリリースされる前は、Web プログラミングにおける最大の課題は、...

オンライン MYSQL 同期エラーのトラブルシューティング方法の概要 (必読)

序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...

10分で始めるCSS3アニメーション

導入アニメーションを使用すると、JavaScript や jQuery に依存せずに、純粋な CSS...

ul リスト タグ デザイン ウェブ ページ 複数列レイアウト

数日前、CSS で 3 列レイアウトを書いていたときに、突然この方法を思いつきました。このアイデアは...

DockerコンテナはホストのMySQL操作にアクセスする

背景:インターフェイスを提供する Flask プロジェクトがあり、これは Docker コンテナを使...