【Linux】正規表現【学んだこと備忘録】

 

毎日、学んだことや気付いたこと、思ったことをアウトプットするようにし始めた。

(毎日投稿できていない…泣)

間違ってる箇所とかあるかもしれない、、

 

 

 

 

 

Windowsのメモ帳で作成したテキストファイル「file1.txt」をLinuxで正しく扱うため改行コードを変換して「file2.txt」として保存したい ↓

 

以下二通りの方法でできる。

 

①tr -d '^M' < file1.txt > file2.txt

※trコマンドの-dオプションで制御コード「^M」を削除してる。リダイレクト         (<)で「file1.txt」を入力とし、削除した結果を「file2.txt」に出力(>)してる。

sed s/^M//g file1.txt > file2.txt

sedコマンドで「file1.txt」中の全ての制御コード「^M」を空白文字に置換(つま  り削除)して「file2.txt」に出力してる。

 

 

 

ちなみに改行コードと代表的なOSの組み合わせはこれ。

・CRLF(\r\n):Windows

・LF(\n):Unix OS(Linux, Mac OS Xなど)

・CR(\r):古いMacOS(バージョン9まで)

 

上記の通りWindowsLinuxでは改行コードが違うからテキストファイルの扱いが問題になることがある。CRLF(\r\n)からCR(\r)を取り除くことでLinuxの認識できる改行コード:LF(\n)のみにでき正しく扱える。また、CR(キャリッジリターン)は「^M」という制御コードでも表されるため、Windowsで作成したファイルをLinuxのエディタで開くと末尾に「^M」が表示されることがある。だから制御コード「^M」を取り除くことでもLinuxの改行コードLF(\n)に変換できる。

 

・・らしい!