ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ#
6
10
1
3
1
2
17
7
1
1
6
12
4
1
2
205
1
6
2
7
14
5
1
27
3
3
1
6
1
1
42
1
3
3
1
1
1
1
1
1
24
46
7
9
10
5
10
3
3
2
8
2
2
6
5
1
1
4
9
4
3
3
2
1
8
2
4
1
5
27
2
12
2
3
1
1
2
2
1
1
1
4
3
2
4
2
2
1
1
2
1
2
1
2
1
27
2
1
2
2
2
1
1
2
3
14
5
8
1
1
2
12
1
5
1
2
7
1
1
1
1
1
8
1
5
2
1
1
1
3
3
10
1
2
1
1
7
3
1
10
1
1
4
1
2
1
2
7
2
2
3
1
1
3
1
2
1
2
2
2
1
2
3
1
2
3
4
1
3
1
3
3
2
1
1
7
1
3
3
1
1
1
1
5
1
33
2
1
2
1
2
2
3
1
1
1
3
1
2
1
1
1
3
1
1
1
2
4
2
1
1
1
3
1
2
4
2
1
2
1
2
1
1
2
1
1
1
2
1
1
2
02_freebsd:80_unixコマンド:sed

sed

機能

sedコマンドは、文字の置換を行うコマンドです。

構文

sed [オプション] [コマンド] [ファイル名]

オプション

-e次にくるのがコマンドとする。
-f次にくるのがスクリプトとする。
-iファイルを書き換える 。
.[name] を付けるとオリジナルを保存しておく

コマンド

d行を削除
s/パターン/置換文字列/各行で最初に一致した文字列だけ置換(s/パターン/置換文字列/)
s/パターン/置換文字列/g全体を置換(s/パターン/置換文字列/g)
s/パターン/置換文字列/gi全体を置換(s/パターン/置換文字列/g) ※大文字小文字関係なく
s/パターン/置換文字列/数値各行で指定した数値番目の文字列だけ置換(s/パターン/置換文字列/数値)
s/パターン/置換文字列/3各行で3番目に一致した文字列だけ置換(s/パターン/置換文字列/)

コマンド例

Sed で空白行・空白を削除する

color(red){'/^$/d'};が条件とコマンドの個所だが、
/と/の間が条件です。この場合[^]が行頭の意味[$]が行末の意味
つまり行頭からいきなり行末の行を削除するという意味

 $ cat test.txt
 -------------------------------------
 1行目
 
 
 2行目
 
 
 
 
 3行目
 -------------------------------------
 
 $ sed '/^$/d' test.txt
 -------------------------------------
 1行目
 2行目
 3行目
 -------------------------------------

week.txtの1から5行目を削除する。

 $ cat week.txt
 -------------------------------------
 Sunday
 Monday
 Tuseday
 Wensday
 Thursday
 Friday
 Saturday
 -------------------------------------
 $ sed '1,5d' week.txt
 -------------------------------------
 Friday
 Saturday
 -------------------------------------

penを山本に置換する。

 $ cat test.txt
 -------------------------------------
 私はpenです。
 -------------------------------------
 
 $ sed 's/pen/山本/g' test.txt
 -------------------------------------
 私は山本です。
 -------------------------------------

改行文字も含めて挿入(置換)する方法。

 $ cat test.txt
 -------------------------------------
 aaaaa
 bbbbb
 ccccc
 ddddd
 eeeee
 fffff
 ggggg
 matsui
 -------------------------------------
 $ sed '1s/^/1Line\
 > /' test.txt
 -------------------------------------
 1Line
 aaaaa
 bbbbb
 ccccc
 ddddd
 eeeee
 fffff
 ggggg
 matsui
 -------------------------------------

ファイルを変更、バックアップを取得する

  1. sedコマンドでファイルを変更して保存
  2. 元ファイルは、.bakを付けて保存
元ファイル
$ cat test.txt
AAAA
BBBB
CCCC
DDDD
実行
$ sed -i.bak 's/CCCC/ZZZZ/g' test.txt
ファイルは変更される

元ファイルは、test.txt.bakとして保存されている

$ cat test.txt
AAAA
BBBB
ZZZZ
DDDD

$ cat test.txt.bak 
AAAA
BBBB
CCCC
DDDD

空白、tabを置換

# cat a
aaa	bbb ccc
# sed 's/\s//g' a
aaabbbccc

指定した行を表示

02_freebsd/80_unixコマンド/sed.txt · 最終更新: 2020/04/24 22:22 by matsui

Yesterday:1511 Today:1394 Total:84691