Tips

LinuxServer シェルとコマンド操作について テキストファイル処理 その2

pasteコマンド

pasteコマンドは二つのファイルを読み、ファイルを行単位で結合します。
デフォルトの区切り文字(デリミタ)はタブになります。
‘-dオプション’で区切り文字を指定することができます。

[コマンド実行例]ファイルjoin01.txtとjoin02.txtをタブで結合
$ paste paste01.txt paste02.txt
01 aaa level1 01 AAA group1
02 bbb level2 02 BBB group2

[コマンド実行例]ファイルjoin01.txtとjoin02.txtを「=」で結合
$ paste -d “=” join01.txt join02.txt
01 aaa level1=01 AAA group1
02 bbb level2=02 BBB group2

trコマンド

trコマンドは標準入力から読み取った文字列を変換・削除して標準出力に出力します。

trコマンドはほかのコマンドと違い、ファイル名を引数にとりません。
ファイルの内容を変換・削除して出力したい場合は、パイプ「|」かリダイレクト「<」
を使います。

[コマンド書式]
tr -オプション 文字列1 文字列2

主なオプションは次のとおりです

オプション 説明
-c 文字列1にマッチした文字列以外を変換します
-d 文字列1にマッチした文字列を変換せずに削除します
-s 文字列1にマッチした文字列しを、1文字に置き換えます。

指定する文字列には次のような文字クラスを使用することが出来ます。

オプション 説明
[:alpha:] 英字
[:lower:] 英小文字
[:upper:] 英大文字
[:digit:] 数字
[:alnum:] 英数字
[:space:] スペース

$ cat join01.txt
01 aaa level1
02 bbb level2

[コマンド実行例]join01.txtのスペースを削除する
$ tr -d ‘ ‘ < join01.txt
01aaalevel1
02bbblevel2

[コマンド実行例]join01.txtの小文字を大文字に変換する
$ tr [:lower:] [:upper:] < join01.txt
01 AAA LEVEL1
02 BBB LEVEL2

[コマンド実行例]join01.txt内で連続した「a」を1文字に変換する
$ tr -s a < join01.txt
01 a level1
02 bbb level2

sortコマンド

sortコマンドは行単位でファイルの内容をソートし、出力します

ソート基準文字列の開始位置や終了位置の指定は、1番左を0番とした
フィールドと、フィールド内での文字位置の両方が指定できます。

デフォルトでは昇順にそーとします

[コマンド書式]
sort -オプション +文開始位置 -文終了位置 ファイル名

主なオプションは次のとおりです

オプション 説明
-b 行頭の空白を無視します
-f 大文字と小文字を区別しません
-k フィールド ソート対象のフィールドを指定します
-n 数字を文字ではなく数値として処理します
-r 降順にソートします
-t 区切り文字 フィールド区切り文字(セパレータ)を指定します

[コマンド実行例]sortfile.txtを昇順でソート
$ cat sortfile.txt
eee,1511,EEE
ccc,1211,BBB
bbb,1311,CCC
ggg,1411,DDD
aaa,1111,AAA

$ sort sortfile.txt
aaa,1111,AAA
bbb,1311,CCC
ccc,1211,BBB
eee,1511,EEE
ggg,1411,DDD

[コマンド実行例]sortfile.txtを2番目のフィールドで昇順でソート
sort -k 2 sortfile.txt
aaa,1111,AAA
bbb,1311,CCC
ccc,1211,BBB
eee,1511,EEE
ggg,1411,DDD

splitコマンド

splitコマンドはオプションで指定された行ごとに入力ファイルを分割し、結果を複数のファイルに書き込みます
出力されるファイル名はコマンドラインで指定したファイル名の末尾に、
「aa」、「ab」、「ac」 … を付加したものとなります。

[コマンド書式]
split -行数 入力ファイル名 出力ファイル名

[コマンド実行例]splitfile.txtを2行でsplit_の名前で分割
$ split -2 splitfile.txt split_
$ ls split*
split_aa split_ab split_ac splitfile.txt

uniqコマンド

uniqコマンドはテキストファイルの重複している行を1行にまとめて出力します。
出力ファイルを指定しない場合、標準出力に結果を表示します。

uniq -オプション 入力ファイル名 出力ファイル名

オプション 説明
-d 重複している行を出力します
-u 重複していない行を出力します

[コマンド実行例]uniqコマンドは’-d’で重複している行を、 ‘-u’で重複していない行を出力します

$ cat uniqfile.txt
aaaaaaa
aaaaaaa
bbbbbbb

$ uniq -d uniqfile.txt
aaaaaaa

$ uniq -u uniqfile.txt
bbbbbbb

Linux認定資格 LPICを取るなら・・

Linux資格 「LPIC Lv1」徹底解説 連載目次

Recent News

Recent Tips

Tag Search