目次
Linux sedコマンドは、スクリプトを使用してテキストファイルを1行ずつ処理します。これは、スクリプト処理でよく使用されるコマンドです。awkおよびgrepとともに、Linuxの3つの銃士と呼ばれます。以下に例を示します。
1.文法
sed [オプション] [スクリプトコマンド] [ファイル] ..。
1.1一般的なオプション
-e script、-expression = script:オプションで指定されたスクリプトを使用して入力コンテンツを処理します。
-f script-file、-file = script-file:オプションで指定されたscript-fileを使用して入力コンテンツを処理します。
1.2一般的なコマンド
a:新しいコンテンツ、指定された行にコンテンツテキストを追加します。
c:コンテンツを置き換え、テキストを使用して指定された行のコンテンツを置き換えます。
d :コンテンツを削除し、指定された行を削除します。
i:コンテンツを挿入し、指定された行にテキストを挿入します。
■:コンテンツを置き換えます。指定したコンテンツを置き換えることができます。
例:/ etc / passwdファイルの最初の15行
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
1.3コマンドの原理
Sedは入力データを行ごとに処理し、毎回1行を処理します。これは、次の3つのステップに分けることができます。
1.現在処理されている行のコピーを一時バッファー(「モードスペース」と呼ばれる)に格納します。
2.sedコマンドを使用して現在のバッファー内のデータを処理します。
3.データが処理された後、デフォルトでデータが端末に出力され、次の行が処理され、すべてのデータが処理されます。
デフォルトでは、ソースデータは変更されません。
2.例
2.1新しいコンテンツ---コマンドa
sed'4a追加いくつかのテキスト 'passwd
[root@localhost ~]# sed '4a addition some text' 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
addition some text
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
上記の例では、4aは4行目の後にコンテンツを挿入することを意味し、次のテキストは入力コンテンツであり、passwdは入力ファイルです。
2.2コンテンツの置換---コマンドc
sed'2c追加いくつかのテキスト 'passwd
[root@localhost ~]# sed '2c addition some text' passwd
root:x:0:0:root:/root:/bin/bash
addition some text
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
上記の例では、2cは2行目のコンテンツを置き換えることを意味し、次のコンテンツは置き換えられるコンテンツです。
2.3コンテンツの削除---指定した行を削除します
sed '2d' passwd
[root@localhost ~]# sed '2d' passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
sed '2,5d' passwd
[root@localhost ~]# sed '2,5d' passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
sed '/ ^ bin / d'passwd
[root@localhost ~]# sed '/^bin/d' passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
上記の3つの例では、行を指定するか、間隔を指定するか、削除する特定のコンテンツを指定することで、削除できます。
2.4コンテンツの挿入---コマンドi
sed'1i追加いくつかのテキスト 'passwd
[root@localhost ~]# sed '1i addition some text' passwd
addition some text
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
挿入されたコンテンツは、新しく追加されたコンテンツとは異なります。挿入は指定された行の前に挿入され、新しく追加されたコンテンツは指定された行の後に挿入されます。
2.5コンテンツの置換---コマンド
sed's / root / ROOT / g'passwd
[root@localhost ~]# sed 's/root/ROOT/g' 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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/ROOT:/sbin/nologin
[root@localhost ~]#
上記の例では、vimでの置換と同じように、指定されたコンテンツをコマンドで置き換えることができます。
3、まとめ
上記はsedの一般的な使用法の例のリストであり、ますます詳細なコンテンツがあり、時間があれば紹介します。