SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】 テキスト処理コマンド-その② LPICで学ぶLinux⑬


紹介しきれなかったテキスト処理コマンドの続き。
まだまだ重要なコマンドが多いです。

この辺のコマンドは実践的にはコマンド同士を組み合わせることで効果を発揮するところも大きいですが、試験的にはまずは個々のコマンド動作を覚えるところから。

cutコマンド

cutコマンドはファイルから指定したフィールドを取り出すコマンドです。
オプションなしで実行することはできずオプションを覚えることが重要になります。

オプション

オプション 内容
-c [文字数] 取り出す位置を指定する
-d [区切り文字] 区切り文字を指定する
-f [フィールド] 取り出すフィールドを指定する

・サンプルファイル
コマンド実行を試す際に以下のカンマ区切りのファイルを使用します。

[wantan@localhost ~]$ cat cutfile.txt
1,2,3,4,5,6
a,b,c,d,e,f

■取り出す位置を指定する

「-c」オプションを指定する場合は区切り文字などを気にせず単純な文字数で表示します。

[wantan@localhost ~]$ cut -c 1 cutfile.txt
1
a
[wantan@localhost ~]$ cut -c 2 cutfile.txt
,
,

ちなみに範囲指定の場合には「-」(ハイフン)、複数指定の場合には「,」(カンマ)を使用します。

[wantan@localhost ~]$ cut -c 2-7 cutfile.txt
,2,3,4
,b,c,d
[wantan@localhost ~]$ # 複数指定
[wantan@localhost ~]$ cut -c 2,3,7 cutfile.txt
,24
,bd

■指定列を表示する

区切り文字を指定して指定行を出力するこちらの方が実践的には使う機会は多い気もします。

[wantan@localhost ~]$ cut -d , -f 3 cutfile.txt
3
c

こちらも同様に数値の範囲指定や複数指定は可能。

pasteコマンド

pasteコマンドは複数のファイルを読み込んで水平方向につなげます。
あまり使ったとこはありません。試験的にも最低限コマンドの存在を覚えておけばいいのではないかと思います。

以下の2ファイルを対象にします。

[wantan@localhost ~]$ cat num.txt
1
2
3
4

[wantan@localhost ~]$ cat alpha.txt
a
b
c
d
e

■ファイルをつなげる

[wantan@localhost ~]$ paste num.txt alpha.txt
1       a
2       b
3       c
4       d
        e

■区切り文字を指定する

区切り文字を指定するには「-d」オプションを指定します。

[wantan@localhost ~]$ paste -d : num.txt alpha.txt
1:a
2:b
3:c
4:d
:e

trコマンド

trコマンドは標準入力の文字列の置換や削除に用いられるコマンドです。
ファイルを直接指定せず出力して指定するのがひとつのポイントです。

オプション

オプション 内容
-d 指定した文字列を削除する
-s 連続したパターン文字列を1つの文字列とする

・trコマンドのクラス

trコマンドでは特定の文字列をクラスとして指定することができます。
試験的にも出題しやすく重要です。

クラス 内容
[:alpha:] 英字
[:lower:] 英小文字
[:upper:] 英大文字
[:digit:] 数字
[:alnum:] 英数字
[:space:] スペース


以下のファイルを題材とします。

[wantan@localhost ~]$ cat test.txt
test

hello
ABCD
hellohello
12345
wantan
0000000

■指定文字列の削除

[wantan@localhost ~]$ tr -d wantan < test.txt
es

hello
ABCD
hellohello
12345

0000000

■小文字を大文字に置き換える

[wantan@localhost ~]$ tr [:lower:] [:upper:] < test.txt
TEST

HELLO
ABCD
HELLOHELLO
12345
WANTAN
0000000

sortコマンド

行単位でファイルの内容をソートするコマンド。
やっていること自体はコマンド名通りなのでわかりやすい、オプションをしっかり覚える。

[wantan@localhost ~]$ sort sort.txt

 spase
000
10
2
27
55
9test
oooo
rt
sort

オプション


デフォルトでは昇順でソートされるので、降順でソートするには「-r」オプションをつける。
reverseのr??

オプション 内容
-b 行頭の空白を無視する
-f 小文字大文字の区別を無視する
-r 降順にソート
-n 数字を文字ではなく数値としてソート

■行頭の空白を無視してソート

[wantan@localhost ~]$ sort -b sort.txt

000
098765
10
2
27
55
9test
AAAAAAAA
Sort
abc
nnnnnnn
oooo
rt
 spase

■数字を数値としてソートする
デフォルトでは行頭の1文字を文字列としてソートするため、「10」が「2」より先にきたりする。
数値としてソートする場合には「-n」オプションを使用する。

[wantan@localhost ~]$ sort -n sort.txt

 spase
000
AAAAAAAA
Sort
abc
nnnnnnn
oooo
rt
2
9test
10
27
55
098765

splitコマンド

splitコマンドをファイルを分割するコマンド。
こちらのコマンドも実践では使用したことがないが、試験的な出題はある様子。

デフォルトでは1000行で分割する。

以下の例では「num.txt」を3行ごとにファイル分割する。

[wantan@localhost ~]$ split -3 num.txt splitnum.

なお分割されたファイルは以下のように「aa,ab,ac,・・」の形式で名前が付与されていく。
試験的には名前の命名規則は覚えておきたい。

[wantan@localhost ~]$ ll | grep split
-rw-rw-r--. 1 wantan wantan     6  810 05:25 splitnum.aa
-rw-rw-r--. 1 wantan wantan     6  810 05:25 splitnum.ab
-rw-rw-r--. 1 wantan wantan     6  810 05:25 splitnum.ac
-rw-rw-r--. 1 wantan wantan     9  810 05:25 splitnum.ad
-rw-rw-r--. 1 wantan wantan     9  810 05:25 splitnum.ae
-rw-rw-r--. 1 wantan wantan     9  810 05:25 splitnum.af
-rw-rw-r--. 1 wantan wantan     6  810 05:25 splitnum.ag

uniqコマンド

uniqコマンドはテキスト中の重複する行を1行にまとめて出力する。
オプションの付与によってその他の使い方もある。

実際に使用する場合にはsortコマンドと組み合わせて使用することが多いと思われる。

・元ファイル

[wantan@localhost lpic]$ cat uniq.txt
1
1
4
45
5
5
1
0

・uniqコマンド

[wantan@localhost lpic]$ uniq  uniq.txt
1
4
45
5
1
0

オプション


単に重複行をまとめる以外の場合にはオプションを使用する。

オプション 内容
-d 重複している行のみ出力
-u 重複していない行のみを出力

■重複行のみを出力

[wantan@localhost lpic]$ uniq -d uniq.txt
1
5

■重複していない行のみ出力

[wantan@localhost lpic]$ uniq -u uniq.txt
4
45
1
0

連続していないものは重複とみなされていないので、そのような場合にはsortコマンドと組み合わせる。
試験的には組み合わせは出るかわからない。

[wantan@localhost lpic]$ sort uniq.txt | uniq -u
0
4
45

wcコマンド

標準入力やファイルの行数などをカウントするコマンド。
デフォルトで「行数 単語数 文字数」の順に表示する。

・ファイルを直接指定する

[wantan@localhost lpic]$ wc top.log
  760  6878 64884 top.log

・標準入力から受け取る

[wantan@localhost lpic]$ ll | wc
      9      74     480

オプション


オプションは頭文字から想像できるので比較的覚えやすい。

オプション 内容
-c 文字数を表示
-w 単語数を表示
-l 行数を表示

xargsコマンド

xargsコマンドは標準入力から受け取った文字列を引数にしてコマンドを実行します。
使った経験がないと少し複雑に感じます。

例えば、作成したいファイル名が記述されたファイルを読み込んでファイルを生成しようとした場合、以下のようにパイプでつなぐとうまくいきません。

[wantan@localhost file]$ cat files | touch
touch: ファイルオペランドがありません
Try 'touch --help' for more information.

ここでxargsコマンドを用いることによって、標準入力を文字列として認識して想定通りのファイルを作成することができます。

[wantan@localhost file]$ cat files | xargs touch
[wantan@localhost file]$ ll
合計 4
-rw-rw-r--. 1 wantan wantan 30  810 06:45 files
-rw-rw-r--. 1 wantan wantan  0  810 06:45 test1.txt
-rw-rw-r--. 1 wantan wantan  0  810 06:45 test2.txt
-rw-rw-r--. 1 wantan wantan  0  810 06:45 test3.txt

試験的にはそこまで深くは問われないっぽいです。


ーーーーーーーーーーーーーーーー

・前回(第十二回)
www.wantanblog.com

・次回(第十四回)
www.wantanblog.com