Section Next | Prev


5.3.2 ファイル編集2

【機能説明】
sed (stream editor) は テキストファイルの編集をコマンドから一括して行うツールです。

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

【主なオプション】
-ecommand
編集コマンド(追加、削除、置換など)を指定します、このコマンドは複数回指定可能です。
s/str1/str2/[gp]
文字列str1str2 に置換する。
g オプションは同一行で該当する変更が複数回登場する時に、それらを全て置換
p オプションは変更された結果を表示。
また \(str1\) とする事で合致した部分を \1 として str2 で参照することができます。
/str1/d
文字列 str1 に合致した行を削除します。
-f script
sed コマンドを記述したスクリプトファイルの指定
-n
特に指定しない限り変更を入力データを表示しない。

【実行例1】文字列の置換
# 不等号を > < に変換
$ cat sample.txt
AUTHOR
       Written by Richard Stallman and David MacKenzie.

REPORTING BUGS
       Report bugs to <bug-coreutils@gnu.org>

COPYRIGHT
       Copyright (C) 2004 Free Software Foundation, Inc.
       This is free software; see the source for copying  conditions.   There
       is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU-
       LAR PURPOSE.

$ sed -e 's/>/&gt;/g' -e 's/</&lt;/g' sample.txt
AUTHOR
       Written by Richard Stallman and David MacKenzie.

REPORTING BUGS
       Report bugs to &lt;bug-coreutils@gnu.org&gt;.

COPYRIGHT
       Copyright (C) 2004 Free Software Foundation, Inc.
       This is free software; see the source for copying  conditions.   There
       is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU-
       LAR PURPOSE.
【実行例2】特定行の切り出し
# 行を特定して取り出す
$ cat -n /etc/passwd |sed -e "1,5p" -n 
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

$ cat -n /etc/passwd |sed -e "20,25p" -n
    20  rpm:x:37:37::/var/lib/rpm:/sbin/nologin
    21  haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
    22  netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
    23  ident:x:98:98::/home/ident:/sbin/nologin
    24  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    25  rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin

# 行に含まれる文字列を指定し、そこから3行切り出す
$ cat /etc/passwd |sed -e "/^lp/,+3p" -n
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
【実行例3】文字列の切り出し
# 括弧 \(, \) 内の正規表現で合致した文字列を \1 として切り出す
$ ls
a.sed   find.txt   sample.txt 

$ ls | sed -e "s/\(^.*$\)/mv \1 \1.bkup"
mv a.sed a.sed.bkup
mv find.txt find.txt.bkup
mv sample.txt sample.txt.bkup
【実行例4】複雑な文字列変換
$ /sbin/ipconfig
eth0      Link encap:Ethernet  HWaddr 00:B0:D0:AD:49:9C
          inet addr:172.19.0.117  Bcast:172.19.255.255  Mask:255.255.0.0
          inet6 addr: fe80::2b0:d0ff:fead:499c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27694 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13791 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14613860 (13.9 MiB)  TX bytes:2454658 (2.3 MiB)
          Interrupt:11 Base address:0xec80

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:589 errors:0 dropped:0 overruns:0 frame:0
          TX packets:589 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:121651 (118.7 KiB)  TX bytes:121651 (118.7 KiB)

# ipconfig の出力のうち Bcast のある行のみを切り出し
# その行の行頭から Bcast: までを削除
# 更に Mask から行末までを削除
$ /sbin/ipconfig | sed -e '/Bcast/{s/^.*Bcast://;s/Mask.*$//p}' -n`
172.19.255.255

Section Next | Prev

Copyright 2007-2018 ycosSystems Misc/Body532.html