Section Next | Prev


5.3.1 ファイル編集1

ファイルの特定の箇所を切り取ったり、複数のファイルを連結するといった 処理を行うコマンド群を解説します。


cut

【機能説明】
cut はテキストファイルの特定の桁または区切り文字で区切られた欄を切り出します。

【入力フォーマット】
cut [ オプション ] ファイル...

【主なオプション】
-dc
区切り文字(cの指定(切り出す単位は欄になります)

-fn1-n2
区切り文字(-d)で指定した欄の n1 を切り出し、 n1,n2,n3.. の形式では n1,n2,n3 の欄を切り出す。
n1-n2 の形式では n1からn2 までの欄を切り出す。
n1- の形式では n1から最後までの欄を切り出す。
-n1 の形式では 最初から n1 までの欄を切り出す。

-cn1-n2
各行の n1文字目から n2文字目を切り出す。 値の指定方法は -f と同様。

【実行例】
# passwd(5) の1桁目から20桁目を切り出す例
$ cut  -c-20 /etc/passwd | head
root:x:0:0:root:/roo
bin:x:1:1:bin:/bin:/
daemon:x:2:2:daemon:
adm:x:3:4:adm:/var/a
lp:x:4:7:lp:/var/spo
sync:x:5:0:sync:/sbi
shutdown:x:6:0:shutd
halt:x:7:0:halt:/sbi
mail:x:8:12:mail:/va
news:x:9:13:news:/et

# passwd(5) のユーザ名、ユーザID、シェルを取り出す
$ cut -d: -f1,3,7 /etc/passwd | head
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin


paste

【機能説明】
paste は2つのファイルを連結したり、複数行を1行に連結します。

【入力フォーマット】
paste [ オプション ] ファイル...

【主なオプション】
-dc
区切り文字(cの指定)

-s
1つのファイルの複数行を1行に連結します。

【実行例】
# 扱うデータ
$ cat -n a.txt
     1  aaaaaaaaaa
     2  bbbbbbbbbb
     3  cccccccccc
     4  dddddddddd
$ cat -n b.txt
     1  111111111111111
     2  222222222222222

# 2つのファイルを連結
$ paste -d= a.txt b.txt
aaaaaaaaaa=111111111111111
bbbbbbbbbb=222222222222222
cccccccccc=
dddddddddd=

$ paste -d- b.txt a.txt
111111111111111-aaaaaaaaaa
222222222222222-bbbbbbbbbb
-cccccccccc
-dddddddddd

# 1行に連結
$ paste -d= -s a.txt
aaaaaaaaaa=bbbbbbbbbb=cccccccccc=dddddddddd

join

【機能説明】
join はキー項目を指定し、2つのファイルを連結します。

【入力フォーマット】
join [ オプション ] ファイル...

【主なオプション】
-tc
区切り文字(c)の指定。

-1n1, -2n2
キー項目を指定します。特に指定しないと1番目を採用します。
-1 は引数に指定された最初のファイルについて、-2 は2番目のファイルについて指定します。

【実行例】
# 扱うデータ
$ cat a.txt
1st aaaaaaaaaa
2nd bbbbbbbbbb
3rd cccccccccc
4th dddddddddd
$ cat b.txt
1st 111111111111111
2nd 222222222222222
$ cat c.txt
1st 111111111111111
3rd 222222222222222

# 単純な連結
$ join a.txt b.txt
1st aaaaaaaaaa 111111111111111
2nd bbbbbbbbbb 222222222222222
$ join a.txt c.txt
1st aaaaaaaaaa 111111111111111
3rd cccccccccc 222222222222222

# キー位置を指定しファイルを連結
# キー位置は passwd が4番目、group が3番目
$ head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

$ head /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp

# 先頭にキー項目が表示され、各ファイルのキー項目は削除される
$ join -t: -14 -23 /etc/passwd /etc/group | head
0:root:x:0:root:/root:/bin/bash:root:x:root
1:bin:x:1:bin:/bin:/sbin/nologin:bin:x:root,bin,daemon
2:daemon:x:2:daemon:/sbin:/sbin/nologin:daemon:x:root,bin,daemon
4:adm:x:3:adm:/var/adm:/sbin/nologin:adm:x:root,adm,daemon
7:lp:x:4:lp:/var/spool/lpd:/sbin/nologin:lp:x:daemon,lp

Section Next | Prev

Copyright 2007-2018 ycosSystems Misc/Body531.html