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

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