tr コマンド で 改行コード を 置換 する

まぁ、ここにまんまあるわけですが、
方法が結構沢山あって一発改行について紆余曲折するものです。

方法の一つとして

$ tr -A "\12" "\15\12" < input1 > output1
$ tr -A "^M" "\15\12" < output1 > output2
があるようです。

^M は Ctrl-V Ctrl-M

...「-A」が少なくともDebianにはないんだが。

ここにオプション指定しない場合は変換処理をするとあったので試しにやってみた。

--delete (-d) オプションが指定されていない場合には変換を行う。
test.txt

                        • -

aaa
bbb
ccc

                        • -

linux上で作成したので、開業はLFの\nだ。
だから以下を実行した。
tr "\12" "\15\12" < test.txt > test2.txt
ちなみに<>はtest.txtをtrコマンドに出力してその返りをtest2.txtに
渡すという意味で飾りじゃないからね。

で、結果上記で成功した。いや、実は勝手にCRLFになりやがるので
強引にLFとかCRのみに変換して試したのが正解。色々言いたいけど
目的じゃないのでスルー。trコマンドで変更が可能ということを伝えたい。
「-A」については不明。


\15や\12ってなんやねんと思いました。

\ooo
ooo (1〜3 桁の 8 進数) によって指定される文字。
と、あったのですがそれだけじゃわかりませんでした。
ここに前進できる情報がありました。
あらゆる文字には、番号がついている
UNIXの改行
LF(Line Feed、番号は10、8進数では12。)
Windows(MS-DOS)の改行
CRとLF
Macintoshの改行
CR(Carrage Return、番号は13、8進数では、15)
へー、そーなんすか。一筋縄じゃねー!興奮してきた

CR+LF \15\12 \r\n win
LF      \12           unix
CR      \15           mac