今回の内容
今回は、tr・sedコマンドについて解説します。
tr
文字の変換・削除や、連続する文字の圧縮を行うには、「tr」コマンドを使用します。
コマンド | |
---|---|
意味 | 標準入力から読み取った文字列を変換したり、削除する。 |
書式 | tr [オプション] [文字列1 [文字列2]] |
オプション | 説明 |
-d | [文字列1]でマッチした文字列を削除。 |
-s | 連続するパターン文字列を1文字として処理。 |
クラス | 説明(※クラスとは、文字列のところで指定できるものです。) |
[:alpha:] | 英字 |
[:lower:] | 英小文字 |
[:upper:] | 英大文字 |
[:digit:] | 数字 |
[:alnum:] | 英数字 |
[:space:] | スペース |
サンプルファイルの作成
viコマンドで「sample5.txt」を作成
[root@localhost ~]# vi sample1.txt [root@localhost ~]# cat sample1.txt 01 AAAAA abcde 02 bbbbb fghij 03 ccccc klmno 04 ddddd pqrst 05 eeeee uvwxy ★(1行目の「AAAAA」と数字以外は、小文字)
例)文字を「小文字」から「大文字」に変換
「sample5.txt」の表示結果の文字を「小文字」から「大文字」に変換。
[root@localhost ~]# cat sample5.txt | tr 'a-z' 'A-Z' AAAA ABCDE 02 BBBBB FGHIJ 03 CCCCC KLMNO 04 DDDDD PQRST 05 EEEEE UVWXY [root@localhost ~]# [root@localhost ~]# cat sample5.txt | tr [:lower:] [:upper:] AAAA ABCDE 02 BBBBB FGHIJ 03 CCCCC KLMNO 04 DDDDD PQRST 05 EEEEE UVWXY [root@localhost ~]#
例)の文字「:」を削除
「/etc/passwd」の表示結果の文字「:」を削除
★削除前 [root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync ★削除後 [root@localhost ~]# cat /etc/passwd | tr -d : rootx00root/root/bin/bash binx11bin/bin/sbin/nologin daemonx22daemon/sbin/sbin/nologin admx34adm/var/adm/sbin/nologin lpx47lp/var/spool/lpd/sbin/nologin syncx50sync/sbin/bin/sync
例)「小文字」から「大文字」に変換。(連続した文字は1文字とする)
「sample5.txt」の表示結果の文字を「小文字」から「大文字」に変換。(連続した文字は1文字とする)
[root@localhost ~]# cat sample5.txt | tr -s [:lower:] [:upper:] A ABCDE 02 B FGHIJ 03 C KLMNO 04 D PQRST 05 E UVWXY [root@localhost ~]#
sed
標準入力からのテキストストリームをフィルタ処理して、標準出力へ渡すには、「sed」コマ
ンドを使用します。
コマンド | |
---|---|
書式 |
sed [オプション] ‘コマンド‘ [ファイル] sed [オプション] -e‘コマンド1‘ [-e‘コマンド2‘ …] [ファイル] sed [オプション] -f スクリプトファイル [ファイル] |
編集コマンド | 説明 |
d | マッチした行を削除する。 |
s | パターンに基づいて置換する。 |
y | 文字を置換する。 |
オプション | 説明 |
-e | 次の引数はコマンドとして認識する。 |
-f | 次の引数はスクリプトファイルと認識する。 |
-g | パターンに最初からマッチした文字列だけでなく、全てのマッチする文 字列を置き換える。 |
例)1~5行目を削除して表示。
「/etc/passwd」ファイルの内容の1~5行目を削除して表示。(一部省略)
[root@localhost ~]# cat -n /etc/passwd | sed -e '1,5d' 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 operator:x:11:0:operator:/root:/sbin/nologin (省略)
例)「bin」を「—–」に変換して表示
)「/etc/passwd」ファイルの内容の「bin」を「—–」に変換して表示。(一部省略)
★置換前 [root@localhost ~]# cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync ★置換後 [root@localhost ~]# cat -n /etc/passwd | sed -e 's/bin/-----/g' 1 root:x:0:0:root:/root:/-----/bash 2 -----:x:1:1:-----:/-----:/s-----/nologin 3 daemon:x:2:2:daemon:/s-----:/s-----/nologin 4 adm:x:3:4:adm:/var/adm:/s-----/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/s-----/nologin 6 sync:x:5:0:sync:/s-----:/-----/sync
まとめ
tr・sedコマンドの実行結果しっかり覚えておきましょう!
それでは今回はこのあたりで。
確認問題
問題1
文字の変換・削除や、連続する文字の圧縮を行うコマンドで、正しい選択肢を1つ選びなさい。
A) paste
B) touch
C) tr
D) cd
問題2
標準入力からのテキストストリームをフィルタ処理して、標準出力へ渡すコマンドで、正しい選択肢を1つ選びなさい。
A) sed
B) mkdir
C) echo
D) sort