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