【テキスト処理(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