ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ数量
9
10
1
3
1
2
17
7
1
1
4
13
4
1
2
305
1
9
2
7
21
5
1
30
3
3
1
6
1
1
46
1
3
3
1
1
1
1
1
1
33
46
7
9
10
8
10
3
17
2
9
2
2
6
9
1
1
6
11
4
3
3
2
1
8
2
4
1
6
30
2
12
3
3
1
1
2
3
2
1
3
4
3
3
4
2
2
1
1
2
1
2
1
2
1
27
2
1
3
2
2
1
1
2
3
17
5
9
1
1
2
16
2
6
1
2
12
1
3
1
1
4
11
1
6
4
2
7
1
3
3
13
1
4
1
1
10
3
1
17
3
1
5
1
2
1
1
2
9
2
2
3
2
1
3
1
3
1
2
2
2
1
2
6
1
4
3
5
1
3
1
3
3
2
1
1
30
1
3
3
1
1
1
4
5
1
36
2
4
2
1
2
2
3
1
1
1
4
1
2
1
3
1
1
1
2
5
2
5
2
1
1
1
5
3
2
4
4
1
2
2
25
1
1
3
4
1
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
19
7
1
4
1
1
3
1
2
1
1
2
1
1
1
1
1
1
2
1
1
2
1
1
1
1
1
1
1
2
2
1
1
1
1
2
1
1
2
1
1
12
1
1
1
1
1
1
1
1
1
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:2471 Today:396 Total:152464