sed

[機能]

  非対話的に使用されるエディタです

[形式]
sed [-n] -f program-file [file-list]
sed [-n] program [file-list]
	-n              : 出力命令を指定しないかぎり出力しません.
	-f program-file : program-file で指定されたファイルを sed に対するプ
	                  ログラムとして実行します.
	file-list       : sed が編集対象にするファイルのリストです
	program         : sed のプログラムです(文字列,「 ' 」で囲む必要があ
	                  ります)

sed のプログラムは幾つかの行からなっており,各行は以下に示す様な形式
に従っています.

	[address [,address]] instruction [argument-list]

1)address

	通常,行番号として指定します.パターンをアドレスとして使用し,そ
	のパターンを含む行を指定することも出来ます.この場合,そのパター
	ンを,スラッシュ( / )で囲まなければなりません.

2)instruction

	d : 削除
	s : 置換.形式は以下の通です.
			[address [,address]] s/pattern/replacement-string/[g][p][w]
				g : 行内のすべての候補を置換
				p : 置換が行われた行を出力
				w : 置換が行われた行をファイルに出力( w file-name )
	p : アドレスで指定された行を出力
	w : アドレスで指定された行をファイルに出力( w file-name )
		
[使用例]

  1. line を含む行を出力します
    sed -n "/line/ p" test			
  2. 3 行目から 6 行目までを出力します
    sed -n "3,6 p" test			
  3. 1 行目から 5 行目までのすべての tttt を if に置換し,それらの行だけを出力します.
    sed -n "1,5 s/tttt/if/p" test			
  4. 1 行目から 5 行目までのすべての tttt を if に置換し,6 行目から 8 行目までのすべての yyy を zzz に置換した後,1 行目から 8 行目までを出力します.
    sed -n "1,5 s/tttt/if/g\
            6,8 s/yyy/zzz/g\
            1,8 p" test			
    このように長いプログラムは,以下の内容
    1,5 s/tttt/if/g
    6,8 s/yyy/zzz/g
    1,8 p			
    をもつファイル temp を作成した後,
    sed -n -f temp test			
    を実行しても同じ結果が得られます.

[参照]

awk, uniq, vi, fgrep

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引