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のユーザー管理とPostgreSQLのユーザー管理の違い

1. MySQL ユーザー管理[例1.1] ローカルMySQLサーバーのテストデータベースにroot...

Apache Bench ストレステストツールの実装原理と使用状況分析

1: スループット(1秒あたりのリクエスト数)サーバーの同時処理能力を定量的に表したもので、reqs...

ソースコードから、Vue2がデータとメソッドを直接取得できる理由がわかる

目次1. 例: これはデータとメソッドを直接取得できます2. 環境を準備し、ソースコードをデバッグし...

CSSは背景画像の画面適応を実現する

ログインページなどのホームページを作成する場合、大きな背景画像を配置する必要があり、さまざまな画面の...

Linux サーバーに Python3 をインストールする 2 つの方法

最初の方法Alibaba Cloud および Baidu Cloud サーバーが利用可能です。 ! ...

カンマで区切られたmysqlの分割関数の実装

1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...

純粋な CSS を使用して 3D 回転効果を実装するサンプル コード

3D効果を実現するには、主にCSSのpreserve-3dプロパティとperspectiveプロパテ...

テキストエリアをレイアウトしたときにテキストが左下にあり、サイズを変更できない問題の解決策

2つの小さな問題ですが、長い間私を悩ませていました。最初の質問テキストエリアの左側のテキストは常にテ...

CentOS6 アップグレード glibc 操作手順

目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...

MySQLクエリ最適化に必須の知識ポイントのまとめ

序文クエリの最適化は一夜にして達成できるものではありません。対応するツールの使い方を学び、他の人の経...

HTML で Flash を読み込む方法 (2 つの実装方法)

最初の方法: CSSコード:コードをコピーコードは次のとおりです。 .b970-a{幅:970px;...

MySQL inndbジョイントインデックスを正しく使用する方法を徹底的に理解するためのケーススタディ

最近確認された5件のデータを照会するビジネスがあります。 `id`、`title` を選択 `th_...

波効果を作成するための CSS のトリック

純粋な CSS を使用して波の効果を実現することは、常に非常に困難でした。 波形曲線を実現するにはベ...

MySQL 5.7 で業務を停止せずに従来のレプリケーションを GTID レプリケーションに変更する例

GTID の利点により、従来のファイル POS ベースのレプリケーションを GTID ベースのレプリ...

SQLデータベースの14の事例の紹介

データシート /* Navicat SQLite データ転送 ソースサーバー: school ソース...