sed

unix系には入っているテキスト処理の仕組みで、パターンスペースで処理を行います。

[vagrant@localhost sed]$ sed --version
GNU sed 4.2.1版

Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

GNU sed home page: .
General help using GNU software: .
E-mail bug reports to: .
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.

sedコマンド

[vagrant@localhost sed]$ sed -e '3d' names.text
1 yamada
2 yokoi
4 hirose
5 inui

バックアップを作成し、元ファイルを上書き

[vagrant@localhost sed]$ sed -i.bak '3d' names.text
[vagrant@localhost sed]$ cat names.text.bak
1 yamada
2 yokoi
3 sakamoto
4 hirose
5 inui

コマンドファイルの作成

[vagrant@localhost sed]$ vi ex1.sed
[vagrant@localhost sed]$ sed -f ex1.sed names.text
1 yamada
2 yokoi
4 hirose
5 inui

アドレスの種類


[vagrant@localhost sed]$ sed '3d' names.text
1 yamada
2 yokoi
4 hirose
5 inui
[vagrant@localhost sed]$ sed '!3d' names.text
sed: -e 表現 #1, 文字数 2: 未知のコマンドです: 「3」
[vagrant@localhost sed]$ sed '3!d' names.text
3 sakamoto
[vagrant@localhost sed]$ sed '1d;3d' names.text
2 yokoi
4 hirose
5 inui
[vagrant@localhost sed]$ sed '1,3d' names.text
4 hirose
5 inui
[vagrant@localhost sed]$ sed '1~2d' names.text
2 yokoi
4 hirose
[vagrant@localhost sed]$ sed '$d' names.text
1 yamada
2 yokoi
3 sakamoto
4 hirose

追加コマンド

[vagrant@localhost sed]$ sed '3p' names.text
1 yamada
2 yokoi
3 sakamoto
3 sakamoto
4 hirose
5 inui
[vagrant@localhost sed]$ sed -n '3p' names.text
3 sakamoto
[vagrant@localhost sed]$ sed '3q' names.text
1 yamada
2 yokoi
3 sakamoto
[vagrant@localhost sed]$ sed '1i\--start--' names.text
--start--
1 yamada
2 yokoi
3 sakamoto
4 hirose
5 inui
[vagrant@localhost sed]$ sed '1i\--start --' -e '$a\-- end --' names.text
1 yamada
2 yokoi
3 sakamoto
4 hirose
5 inui
-- end --

Yコマンドによる置換

[vagrant@localhost sed]$ sed 'y/y/Y/' names.text
1 Yamada
2 Yokoi
3 sakamoto
4 hirose
5 inui
[vagrant@localhost sed]$ sed 'y/yo/YO/' names.text
1 Yamada
2 YOkOi
3 sakamOtO
4 hirOse
5 inui

sコマンドで文字列の置換、フラグgですべての文字列を置換します。&の置換もあります。
sed ‘s/\([-5]\) \(.*\)/\2’items.text

ホールドスペースとは、パターンスペースの裏バッファのようなものです。
h:hold -> パターンスペースをホールドスペースに
g:get -> ホールドスペースからパターンスペースに
x:exchange -> パターンスペースとホールドスペースを交換