【テキスト処理(2)】
このHPはLinuxのテキスト処理についてまとめたものです。
2-1 sortコマンド
sortコマンドは、ファイルの内容を行単位でソートして表示するコマンド。
デフォルトでは、昇順。
<<書式>>
sort [オプション] [[+開始位置[-終了位置]] [ファイル名]

■コマンド例:1
以下の例では、ms-officeの内容を昇順にソートしている。
$ cat ms-office
Word
Excel
Access
PowerPoint
Outlook
OneNote
Publisher
$ sort ms-office
Access
Excel
OneNote
Outlook
PowerPoint
Publisher
Word
■コマンド例:2
以下の例では、「-r」オプションを使用して、ms-officeの内容を降順にソートしている。
$ cat ms-office
Word
Excel
Access
PowerPoint
Outlook
OneNote
Publisher
$ sort -r ms-office
Word
Publisher
PowerPoint
Outlook
OneNote
Excel
Access
■コマンド例:3
フィールドは、ブランク文字(空白やタブ)で区切られる。
以下の例では、「-k」オプションを使用して、ms-officeの内容を、フィールドを比較対象に指定してソートしている。
$ cat ms-office
Microsoft 7 Word
Microsoft 4 Excel
Microsoft 6 Access
Microsoft 5 PowerPoint
Microsoft 1 Outlook
Microsoft 2 OneNote
Microsoft 3 Publisher
$ sort -k 2 ms-office ←2番目のフィールド以降を比較
Microsoft 1 Outlook
Microsoft 2 OneNote
Microsoft 3 Publisher
Microsoft 4 Excel
Microsoft 5 PowerPoint
Microsoft 6 Access
Microsoft 7 Word
■コマンド例:4
フィールドは、ブランク文字(空白やタブ)で区切られるが、「-t」オプションで区切り文字を指定できる。
以下の例では、カンマを区切り文字にして、第3フィールドで昇順にソートしている。
$ cat ms-office
Microsoft, 7, Word
Microsoft, 4, Excel
Microsoft, 6, Access
Microsoft, 5, PowerPoint
Microsoft, 1, Outlook
Microsoft, 2, OneNote
Microsoft, 3, Publisher
$ sort -t, -k 3 ms-office ←カンマを区切り文字にし第3フィールドでソート
Microsoft, 6, Access
Microsoft, 4, Excel
Microsoft, 2, OneNote
Microsoft, 1, Outlook
Microsoft, 5, PowerPoint
Microsoft, 3, Publisher
Microsoft, 7, Word
2-2 uniqコマンド
uniqは、重複している行を1行にまとめて表示するコマンド。ただし、重複検査は隣接している行に対して行われ、対象ファイルはあらかじめsortコマンドなどでソートしていておく必要がある。
<<書式>>
uniq [オプション] [入力ファイル] [出力ファイル]

■コマンド例:1
以下の例では、重複行を削除して表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq ms-office
Word
Excel
Access
PowerPoint
Outlook
OneNote
Publisher
■コマンド例:2
以下の例では、「-u」オプションを使用し、重複していない行だけを表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq -u ms-office
OneNote
Publisher
■コマンド例:3
以下の例では、「-d」オプションを使用し、重複している行だけを表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq -d ms-office
Word
Excel
Access
PowerPoint
Outlook
■コマンド例:4
以下の例では、「-c」オプションを使用し、重複している行数を表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq -c ms-office
2 Word
2 Excel
2 Access
2 PowerPoint
2 Outlook
1 OneNote
1 Publisher
2-3 splitコマンド
splitコマンドはデフォルトでは、1000行ごとにファイルを分割する。分割されたファイルは、ファイル名の末尾に
「aa」「ab」「ac」・・・とつけて保存していく。
「生成ファイル名の接頭文字」を指定しないと、デフォルトで「x」という名前が付き、「xaa」「xab」「xac」・・・・というファイルが生成される。
<<書式>>
split [オプション] [元ファイル] {[分割後ファイル名の接頭文字]}

■コマンド例:1
以下の例では、tes01を3行ごとに分割し、「shikaku.aa」、「shikaku.ab」、「shiakaku.ac」というファイル名で
保存している。
$ cat test01
lpic-level_1
lpic-level_2
lpic-level_3
ccna
ccnp
ccie
oracle-master-silver
oracle-master-gold
oracle-master-plutinum
$ split -3 test01 shikaku. ←test01を3行ずつ分割し、分割したファイルの接頭文字を「shikaku.」にする。
$ ls -l
-rw-rw-r-- 1 root root 117 2月 1 11:35 test01
-rw-rw-r-- 1 root root 39 2月 7 13:59 shikaku.aa ←「shikaku.aa」が出来ている
-rw-rw-r-- 1 root root 15 2月 7 13:59 shikaku.ab ←「shikaku.ab」が出来ている
-rw-rw-r-- 1 root root 63 2月 7 13:59 shikaku.ac ←「shikaku.ac」が出来ている
$ cat shikaku.aa
lpic-level_1
lpic-level_2
lpic-level_3
$ cat shikaku.ab
ccna
ccnp
ccie
$ cat shikaku.ac
oracle-master-silver
oracle-master-gold
oracle-master-plutinum
■コマンド例:2
以下の例では、コマンド例:1で分割したファイルをもとのファイルに戻している。
元のファイルに戻すときは、以下の様に「cat」コマンドを利用する。
$ cat shikaku.?? > shikaku
$ cat shikaku
lpic-level_1
lpic-level_2
lpic-level_3
ccna
ccnp
ccie
oracle-master-silver
oracle-master-gold
oracle-master-plutinum
2-4 wcコマンド
wcコマンドは、テキストファイル内の行数、単語数、バイト数を表示する。
オプションを指定せずに実行すると、行数、単語数、バイト数、ファイル名の順に表示される。

<<書式>>
wc [オプション] ファイル名

■コマンド例:1
以下の例では、バイト数(-c)、単語数(-w)、行数(-l)を表示させている。
$ wc -l test01 ←行数を表示
9 test01
$ wc -w test01 ←単語数を表示
9 test01
$ wc -c test01 ←バイト数を表示
117 test01
このHPはLinuxのテキスト処理についてまとめたものです。
2-1 sortコマンド
sortコマンドは、ファイルの内容を行単位でソートして表示するコマンド。
デフォルトでは、昇順。
<<書式>>
sort [オプション] [[+開始位置[-終了位置]] [ファイル名]

■コマンド例:1
以下の例では、ms-officeの内容を昇順にソートしている。
$ cat ms-office
Word
Excel
Access
PowerPoint
Outlook
OneNote
Publisher
$ sort ms-office
Access
Excel
OneNote
Outlook
PowerPoint
Publisher
Word
■コマンド例:2
以下の例では、「-r」オプションを使用して、ms-officeの内容を降順にソートしている。
$ cat ms-office
Word
Excel
Access
PowerPoint
Outlook
OneNote
Publisher
$ sort -r ms-office
Word
Publisher
PowerPoint
Outlook
OneNote
Excel
Access
■コマンド例:3
フィールドは、ブランク文字(空白やタブ)で区切られる。
以下の例では、「-k」オプションを使用して、ms-officeの内容を、フィールドを比較対象に指定してソートしている。
$ cat ms-office
Microsoft 7 Word
Microsoft 4 Excel
Microsoft 6 Access
Microsoft 5 PowerPoint
Microsoft 1 Outlook
Microsoft 2 OneNote
Microsoft 3 Publisher
$ sort -k 2 ms-office ←2番目のフィールド以降を比較
Microsoft 1 Outlook
Microsoft 2 OneNote
Microsoft 3 Publisher
Microsoft 4 Excel
Microsoft 5 PowerPoint
Microsoft 6 Access
Microsoft 7 Word
■コマンド例:4
フィールドは、ブランク文字(空白やタブ)で区切られるが、「-t」オプションで区切り文字を指定できる。
以下の例では、カンマを区切り文字にして、第3フィールドで昇順にソートしている。
$ cat ms-office
Microsoft, 7, Word
Microsoft, 4, Excel
Microsoft, 6, Access
Microsoft, 5, PowerPoint
Microsoft, 1, Outlook
Microsoft, 2, OneNote
Microsoft, 3, Publisher
$ sort -t, -k 3 ms-office ←カンマを区切り文字にし第3フィールドでソート
Microsoft, 6, Access
Microsoft, 4, Excel
Microsoft, 2, OneNote
Microsoft, 1, Outlook
Microsoft, 5, PowerPoint
Microsoft, 3, Publisher
Microsoft, 7, Word
2-2 uniqコマンド
uniqは、重複している行を1行にまとめて表示するコマンド。ただし、重複検査は隣接している行に対して行われ、対象ファイルはあらかじめsortコマンドなどでソートしていておく必要がある。
<<書式>>
uniq [オプション] [入力ファイル] [出力ファイル]

■コマンド例:1
以下の例では、重複行を削除して表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq ms-office
Word
Excel
Access
PowerPoint
Outlook
OneNote
Publisher
■コマンド例:2
以下の例では、「-u」オプションを使用し、重複していない行だけを表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq -u ms-office
OneNote
Publisher
■コマンド例:3
以下の例では、「-d」オプションを使用し、重複している行だけを表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq -d ms-office
Word
Excel
Access
PowerPoint
Outlook
■コマンド例:4
以下の例では、「-c」オプションを使用し、重複している行数を表示している。
$ cat ms-office
Word
Word
Excel
Excel
Access
Access
PowerPoint
PowerPoint
Outlook
Outlook
OneNote
Publisher
$ uniq -c ms-office
2 Word
2 Excel
2 Access
2 PowerPoint
2 Outlook
1 OneNote
1 Publisher
2-3 splitコマンド
splitコマンドはデフォルトでは、1000行ごとにファイルを分割する。分割されたファイルは、ファイル名の末尾に
「aa」「ab」「ac」・・・とつけて保存していく。
「生成ファイル名の接頭文字」を指定しないと、デフォルトで「x」という名前が付き、「xaa」「xab」「xac」・・・・というファイルが生成される。
<<書式>>
split [オプション] [元ファイル] {[分割後ファイル名の接頭文字]}

■コマンド例:1
以下の例では、tes01を3行ごとに分割し、「shikaku.aa」、「shikaku.ab」、「shiakaku.ac」というファイル名で
保存している。
$ cat test01
lpic-level_1
lpic-level_2
lpic-level_3
ccna
ccnp
ccie
oracle-master-silver
oracle-master-gold
oracle-master-plutinum
$ split -3 test01 shikaku. ←test01を3行ずつ分割し、分割したファイルの接頭文字を「shikaku.」にする。
$ ls -l
-rw-rw-r-- 1 root root 117 2月 1 11:35 test01
-rw-rw-r-- 1 root root 39 2月 7 13:59 shikaku.aa ←「shikaku.aa」が出来ている
-rw-rw-r-- 1 root root 15 2月 7 13:59 shikaku.ab ←「shikaku.ab」が出来ている
-rw-rw-r-- 1 root root 63 2月 7 13:59 shikaku.ac ←「shikaku.ac」が出来ている
$ cat shikaku.aa
lpic-level_1
lpic-level_2
lpic-level_3
$ cat shikaku.ab
ccna
ccnp
ccie
$ cat shikaku.ac
oracle-master-silver
oracle-master-gold
oracle-master-plutinum
■コマンド例:2
以下の例では、コマンド例:1で分割したファイルをもとのファイルに戻している。
元のファイルに戻すときは、以下の様に「cat」コマンドを利用する。
$ cat shikaku.?? > shikaku
$ cat shikaku
lpic-level_1
lpic-level_2
lpic-level_3
ccna
ccnp
ccie
oracle-master-silver
oracle-master-gold
oracle-master-plutinum
2-4 wcコマンド
wcコマンドは、テキストファイル内の行数、単語数、バイト数を表示する。
オプションを指定せずに実行すると、行数、単語数、バイト数、ファイル名の順に表示される。

<<書式>>
wc [オプション] ファイル名

■コマンド例:1
以下の例では、バイト数(-c)、単語数(-w)、行数(-l)を表示させている。
$ wc -l test01 ←行数を表示
9 test01
$ wc -w test01 ←単語数を表示
9 test01
$ wc -c test01 ←バイト数を表示
117 test01