LinuxServer シェルとコマンド操作について キストファイル処理 その2(
前回はテキストデータを表示するための様々なコマンドを紹介しましたが、
今回は、テキストデータを編集したり、整形を行えるコマンド紹介します。
cutコマンド
cutコマンドはテキストファイルの各行から指定したフィールドを取りだします。
‘-cオプション’で取り出す文字位置を指定することが可能で、文字位置は一番左の文字を「1」とします。
また、「-」を使用して取り出す文字位置の範囲を指定することもできます。
‘-dオプション’では区切り文字(デリミタ)で区切られたテキストから任意のフィールドを取り出せます。
‘-dオプション’で区切り文字を指定し、’-fオプションで取り出したいフィールドを指定します。
フィールドは一番左のフィールドを「1」とします。
[コマンド書式]
cut -オプション ファイル名
[コマンド実行例]/etc/servicesの左から7文字目を表示
$ cut -c 7 /etc/services | tail
b
e
e
r
r
c
c
r
[コマンド実行例]/etc/servicesの左から1-7文字目を表示
$ cut -c 1-7 /etc/services | tail
3gpp-cb
isnetse
isnetse
blp5
blp5
com-bar
com-bar
iqobjec
iqobjec
matahar
[コマンド実行例]/etc/servicesのスペースを区切り文字として1フィールド目を表示
$ cut -d’ ‘ -f 1 /etc/services | tail
3gpp-cbsp
isnetserv
isnetserv
blp5
blp5
com-bardac-dw
com-bardac-dw
iqobject
iqobject
matahari
joinコマンド
joinコマンドは二つのファイルを読み、フィールドが共通な行を結合します。
オプション無しの場合、1つ目のフィールドを使って連結します。
正しく出力されるには結合に使用するフィールドが昇順にソートされている
必要があります。
[コマンド書式]
join -オプション ファイル1 ファイル2
主なオプションは次のとおりです
オプション | 説明 |
-j フィールド番号 | 結合対象となるフィールド番号を指定します |
-1 フィールド番号 | ファイル1の結合対象となるフィールド番号を指定します |
-2 フィールド番号 | ファイル2の結合対象となるフィールド番号を指定します |
[コマンド実行例]ファイルjoin01.txtとjoin02.txtを先頭フィールドで結合
$ cat join01.txt
01 aaa level1
02 bbb level2
$ cat join02.txt
01 AAA group1
02 BBB group2
$ join join01.txt join02.txt
01 aaa level1 AAA group1
02 bbb level2 BBB group2
[コマンド実行例]ファイルjoin01.txtの先頭フィールドとjoin03.txtの2番目のフィールドで結合
$ cat join03.txt
AAA 01 group1
BBB 02 group2
$ join -1 1 -2 2 join01.txt join03.txt
01 aaa level1 AAA group1
02 bbb level2 BBB group2