パソコン悪戦苦闘記録

Linuxのsedコマンドでテキスト置換

 PCでテキストを作成するとき、システムごとに使用される改行コードが異なります。
 Windowsでは改行コードとしてCrLf(キャリッジリターンラインフィード)が、LinuxではLf(ラインフィード)が使用されます。

 そのため、Windows環境で作成したテキストファイルをLinuxで開くと、文字化けが起きて、ファイルの内容を読み取ることができません。

 その対策として、改行コードの変換作業を行いました。Windowsで作成のテキストファイルの改行コードCrLfを、Linuxに適したLfに変換するというものです。

 これによって、文字化けの解消ができました。
 こちらの記事をご覧ください。

 改行コードの変換のために使用したコマンドは、「dos2unix」というものです。


 もちろん、このコマンドでもかまいません。使い方もごく簡単だから、迷うことなく実行できます。
 
 けれども、そういった専用のコマンドをわざわざ導入しなくても、もっと一般的なコマンドでもいけそうなことが分かりました。
 その、「より一般的なコマンド」とは・・・・?
 はい、有名な「sed(セドあるいはセッド)」コマンドです。





 sedコマンドは、テキスト処理を行うためのコマンドの一つで、行の削除や、置換作業の場面で多く使われます。
 テキスト処理コマンドとしては、ほかに「awk(オーク)」コマンドがあります。そちらのawkの方がsedよりも高度な編集ができます。

 awkはsedよりも高機能であることは確かですが、そうは言っても、sedでもいろんなパターンの置換作業が可能です。正規表現を利用することができるからです。

 sedコマンドの書式は、次のとおりです。
  sed [オプション] <スクリプト> <対象ファイル>

 上記のスクリプト部分に記述されたコマンドに対応する編集操作が対象のファイルに行われ、出力されることになります。

 sedで使われるコマンドとして、
  「d」 ・・・行を削除
  「p」 ・・・行を表示
  「s」 ・・・置換
などがあります。

 例えば、
  $ sed 1d hoge.txt
と記述すると、テキストファイルの1行目を削除します。


 近いうちに、このsedコマンドを使って、改行コードの変換作業も試してみます。
 おそらく・・・、sedコマンドを使っても、改行コードの変換(CrLf → Lf)ができる
・・・・・・はず?・・・です。
 まぁ、がんばって、研究してみます。




それでは、また次の記事で
goosyun


2024年5月25日追記
 sedを使っての改行コード変換を試みたところ、うまくいきました。
   こちらの記事をご覧ください。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事