🐈

Linux(Cent.os)で、trコマンドで文字変換と標準出力をやってみました!

に公開

Linux(Cent.os)で、trコマンドで文字変換と標準出力をやってみました!
以下は、操作画面です!


Linuxの操作画面。

lighttobrca1z@centos7-1:~/User01$ ls
file.txt output.txt
lighttobrca1z@centos7-1:~/User01$ vi file.txt
lighttobrca1z@centos7-1:~/User01$ vi output.txt
lighttobrca1z@centos7-1:~/User01$ cat file.txt
Hello World!
Konichiwa Sekai!
lighttobrca1z@centos7-1:~/User01$ cat output.txt
hello world!
konichiwa sekai!

lighttobrca1z@centos7-1:~/User01$ tr 'a-z' 'A-Z' < output.txt
HELLO WORLD!
KONICHIWA SEKAI!
lighttobrca1z@centos7-1:~/User01$ tr 'A-Z' 'a-z' < file.txt
hello world!
konichiwa sekai!
lighttobrca1z@centos7-1:~/User01$ cat file.txt
Hello World!
Konichiwa Sekai!
lighttobrca1z@centos7-1:~/User01$ cat output.txt
hello world!
konichiwa sekai!

-> ここでは、標準出力されていても、
保存されていない。

lighttobrca1z@centos7-1:~/User01$ tr 'a-z' 'A-Z' < output.txt
HELLO WORLD!
KONICHIWA SEKAI!
lighttobrca1z@centos7-1:~/User01$ cat output.txt
hello world!
konichiwa sekai!
lighttobrca1z@centos7-1:~/User01$ tr 'a-z' 'A-Z' < output.txt > tmp && mv tmp output.txt
lighttobrca1z@centos7-1:~/User01$ tr 'A-Z' 'a-z' < file.txt > tmp && mv tmp file.txt

標準出力後、リダイレクトで、tmpを作成後、mvコマンドで、
tmp output.txtで、上書き。

lighttobrca1z@centos7-1:~/User01$ cat output.txt
HELLO WORLD!
KONICHIWA SEKAI!
lighttobrca1z@centos7-1:~/User01$ cat file.txt
hello world!
konichiwa sekai!

成功!


【目的】
trコマンドでファイルの文字を変換し、変換結果をファイルに保存する。

【確認用のファイル】
file.txt
Hello World!
Konichiwa Sekai!

output.txt
hello world!
konichiwa sekai!

【trコマンドの動作確認】
trは変換結果を標準出力に表示するだけで、元ファイルには上書きされない。

例:
tr 'a-z' 'A-Z' < output.txt
出力:
HELLO WORLD!
KONICHIWA SEKAI!

この時点では output.txt は変化しない。

【ファイルの内容を安全に上書きする方法】
trはin-place編集ができないため、一度リダイレクトでtmpに保存し、mvで置き換える。

例:
tr 'a-z' 'A-Z' < output.txt > tmp && mv tmp output.txt

逆変換(大文字→小文字)も同様
tr 'A-Z' 'a-z' < file.txt > tmp && mv tmp file.txt

【結果】
output.txt
HELLO WORLD!
KONICHIWA SEKAI!

file.txt
hello world!
konichiwa sekai!

【まとめ】
trは変換結果を標準出力に出すだけなので、>でtmpに保存し、
mvで元ファイルに上書きすることで変換結果を反映することができる。


以上の事を学習しました!
また、次回もLinuxの学習進めたいと思います!
どうぞ、宜しくお願い致します!
🙇‍♀️

Discussion