ASP - read.pudn.comread.pudn.com/downloads125/ebook/530973/ASPAC-SED.pdf · ASP A C i Ì J Î ASP A...
Transcript of ASP - read.pudn.comread.pudn.com/downloads125/ebook/530973/ASPAC-SED.pdf · ASP A C i Ì J Î ASP A...
ASPAC � i Ì J Î �
ASPAC� Academia Sinica PACkage� Î � ³ @ ~ o � Õ � T n y \8 � �
Ì ¸ à " (Software Tools) C \® Þ � X " (Problem Solving) Ý � i � 3 9 � i
ì X s " � 8 � C Z � K ò y � ³ @ ~ o � Õ � T X b � X b Ñ P 2 � � é � � P
£ ] � � À 8 � C Z � � � 3 � � ì � 8 � C Z � ¸ à J ¿ 1 � ì � K � ¹ ð ã ÿ
C � ã ¸ à �
8 � C Z � ¸ à J ¿ 1 � A ì �
1. 8 � Ý ¸ à J ¿ �
Þ º à Y » FSF� Free Software Foundation� 1991O 6` Ï Þ Ì Ý
GNU General Public License�
2. Z � Ý ¸ à J ¿ �
Z � � | � ã ¾ � C S à � ¬ � ÿ ¢ | % ¿ � t & Ä � W � ð Ý [ ã �
1
Contents
2
Chapter 1
Introduction
Sed(Stream EDitor) UNIX � Ù î è º Þ _ ì � ® � � ; Ý _ ì , ¸ à
ï P m à # _ ì £ ] � ¸ à ï � ¿ à sed X è º 20 9 Ë � ! Ý Ð ó ¢ ó , à ) 1
¸ Æ � W � ! Ý _ ì � ® � h ² , ã y sed K | � � � _ ì Z � , Æ Í ù Î � _
ì (line editor)�
× � sed t ð à 3 _ ì £ ° m � � \ ¥ « Ø ° _ ì � ® Ý Z � î , » A Þ
Z � � Ý Ø Í C � � ð W ¨ × Í C � � � � 9 ° 8 ´ y × � UNIX _ ì (ø � P
Ý , A vi� emacs)à W � Ý ] P Ñ ; Z � , sed à R ¼ ´ 6 æ � ì « ¿ ; Þ 5 ½ +
Û ¢ ` ¸ à sed� £ � � | � ÿ sed� C sed A ¢ � ® �
1.1 ¢ ` ¸ à sed
3 Ñ ; Z � ` , A � � \ 2 ¥ « Ø ° _ ì � ® , J � à sed � � × g Æ � 9 ° _
ì � ® � » A � ¸ received j / 1000 � é � * � / Ý s * ß ò ( "Tom" ; W
"John" , h ` © � 3 ú � � î Æ � × � � Ý sed ú � µ � . j / X b Ý "Tom"
C � � ð W "John"�
� ï , Z � m � & 9 � ! _ ì � ® ` , J sed × g � Æ � £ ° � ! Ý _
ì � ® � » A sed � × g Æ � � Þ Z � � X b è ç � À t � � ð C � � ¬ Þ ¸ à ï
í á Ý Z C x � 3 Z � Ý Ï 0 � � � � ! Ý _ ì � ® �
1µ Î ¡ « Þ º è Õ Ý sed script�
3
1.2 ¢ � � ÿ sed
× � Ý UNIX � Ù , Í � Ç ! b sed� � ! Ý UNIX � Ù X ! Ý sed Ì Í ù �
¼ 8 ! � u \ ï X ¸ à Ý UNIX � Ù î Î ! b sed , J � D Ä anonymous ftp Õ
ì � 2 ] � ã ÿ :
phi.sinica.edu.tw:/pub/GNU/gnu
gete.sinica.edu.tw:/unix/gnu
ftp.edu.tw:/UNIX/gnu
ftp.csie.nctu.edu.tw:/pub/Unix/GNU
ftp.fcu.edu.tw: /pub3/UNIX/gnu
axp350.ncu.edu.tw:/Packages/gnu
leica.ccu.edu.tw :/pub2/gnu
mail.ncku.edu.tw :/pub/unix/gnu
bbs.ccit.edu.tw :/pub1/UNIX/gnu
prep.ai.mit.edu.tw:/pub/gnu
1.3 sed � � £ ° _ ì � ®
sed � À t (delete)� ; � (change)� x � (append)� æ á (insert)� ) ¿ � ø
ð Z � � Ý £ ] � , T \ á Í ¸ j Ý £ ] Õ Z � � , ô � � ð (substuite)¸ Æ Í �
Ý C � � T » ð (tranfer)Í � Ý C Ò � � � » A Þ Z � � Ý = � è ç � À W × � �
"local" C � � ð W "remote" � "t" C Ò » ð W "T"� Þ Ï 10 � £ ] � Ï 11 £
] ) ¿ � �
4
1.4 sed A ¢ � ®
A ! Í ¸ UNIX ú � , sed ã ý ã í á \ á _ ì Z � ¬ ã ý ã í � X � � � �
� ì % � î sed Þ £ ] � "Unix" � ð W "UNIX" ,
3 % � , î ] standard input ý ã í á , Î \ ã £ ] � � ; standard output
ý ã í � , Î X � � � � � ; � sed ] s Ý ì « Ë Í Ì a ] s � î sed Ý �
® ø � � Í � , ¼ \ Ì a ] s � î sed Þ ý ã í á £ ] H á pattern space , � \
Ì a ] s � î sed Þ pattern space � _ ì � ± ¡ Ý £ ] X Õ ý ã í � �
3 Ì a ] s � , Ë Í @ a ] s 5 ½ � î pattern space � sed script� Í � ,
pattern space × c � , ¸ Î sed � ® � X ; � sed script J � î × à Æ � Ý
_ ì ¼ � �
3 % � , ¼ \ Ì a ] s "Unix" ã ý ã í á H á pattern space ; # ½ , 3 �
\ Ì a ] s � , sed Æ � sed script � Ý _ ì ¼ � s/Unix/UNIX/ 1 , � �
"Unix" � � ð W "UNIX" , � ¡ , "UNIX" ã pattern space X Õ ý ã í � �
À ) î � X � , sed ã ý ã í á \ á × � £ ] ¬ w á pattern space ` , sed
µ ï sed script Ý _ ì ¼ � @ × E pattern space / Ý £ ] Æ � _ ì , � ¡ , �
ã pattern space / Ý � � X Õ ý ã í � , # ½ � Þ ì × � £ ] \ á � A h ¥ � Æ
� î � � ® , à � \ � X b £ ] � c �
1¼ � s/Unix/UNIX/ � î Þ "Unix" � ð W "UNIX"� � ¢ ï section 4.1�
5
Chapter 2
¸ à sed
Sed ú � � � 5 W _ ì ¼ � � Z � j I � Í � , _ ì ¼ � � . � × X b Ý
_ ì � ® ; Z � j � î X � § Ý j n � sed Ý _ ì ¼ � í ã � ë (address)� Ð
ó (function)Ë I à W , Í � , 3 Æ � ` , sed ¿ à ¸ Ý � ë ¢ ó ¼ X � _ ì Ý
E é ;� à ¸ Ý Ð ó ¢ ó 2 X � X 2 ã Ý _ ì � ® � ¨ ² , î � Ý _ ì ¼ � , � 3 ú
� � î E 9 Í Z � j Æ � 3 _ ì �
h ² , sed _ ì ¼ � , t Ý � 3 ú � � î Æ � , ô � 3 j n / Æ � � Í � -
½ © Î 3 ú � � î Æ � ` , Í G Ä 6 � î ó 4 -e ; � 3 j n 4 / ` , J © m 3 Í j
( G � î ó 4 -f� ¨ ² , sed Æ � _ ì ¼ � Î µ ï ¸ Æ 3 ú � � î T j / Ý g � �
ì « & ; , Þ + Û Æ � ú � � î Ý _ ì ¼ � � sed _ ì ¼ � � Æ � j n /
Ý _ ì ¼ � � Æ � 9 Í j n Ý _ ì � C Æ � sed í � � × �
2.1 Æ � ú � � î Ý _ ì ¼ �
_ ì ¼ � 5 3 ú � � î Æ � ` , Í G Ä 6 � î ó 4 -e � Í ú � } P A ì :
sed -e '_ ì ¼ � 1' -e '_ ì ¼ � 2' ... Z � j
Í � , X b _ ì ¼ � K å # 3 ó 4 -e � ¡ , ¬ H y Ë Í " ' " © � C - � ¨ ² ,
ú � î _ ì ¼ � Ý Æ � Î ã ¼ � � �
19 × à _ ì ¼ � , 3 ¡ « í Ì sed script�23 ¼ � � b 20 ¿ Í Ð ó ¢ ó � º ó C �3� ¢ ï section2.4�4| ¡ 9 j n Ì ® script �le�5ñ Ñ 3 ì × ; º � Þ 1 � _ ì ¼ � �
6
× � _ ì ¼ � � 9 ` , ¸ à ï ; ð à # 3 ú � î Æ � ¸ Æ � » A , À t yel.dat
/ 1 � 10 � £ ] , ¬ Þ Í õ Z C � Ý "yellow" C � ; W "black" C � � h ` ,
� Þ _ ì ¼ � à # 3 ú � î Æ � , Í ú � A ì :
sed -e '1,10d' -e 's/yellow/black/g' yel.dat
3 ú � � , _ ì ¼ � '1,10d'1 Æ � À t 1 � 10 � £ ] ; _ ì ¼ � 's/yellow/black/g'2
Æ � "yellow" C � � ð (substuite)W "black" C � �
2.2 sed Ý _ ì ¼ �
sed _ ì ¼ � Ý } P A ì :
[address1[,address2]]function[argument]
Í � , � ë ¢ ó address1 � address2 � ó T regular expression C � , � î
X Æ � _ ì Ý £ ] � ; Ð ó ¢ ó function[argument] sed Ý / � Ð ó , � î Æ
� Ý _ ì � ® �
ì « Ë � ; , Þ ~ Þ + Û � ë ¢ ó Ý � î ° � b ø ° Ð ó ¢ ó º ó C �
2.2.1 � ë (address)¢ ó Ý � î °
@ j î , � ë ¢ ó � î ° © Î Þ � _ ì Ý £ ] � , à ¸ Æ Ý � ó T Í � Ý C � ¼
� � � î ¸ Æ � ì « Ü ¿ Í » � 1 � (¼ � K | Ð ó ¢ ó d1 » ) :
� À t j / Ï 10 � £ ] , J ¼ � 10d�
� À t â b "man" C � Ý £ ] � ` , J ¼ � /man/d�
� À t j / Ï 10 � Õ Ï 200 � £ ] , J ¼ � 10,200d�
� À t j / Ï 10 � Õ â "man" C � Ý £ ] � , J ¼ � 10,/man/d�
# ì ¼ , | � ë ¢ ó Ý / � � Í Í ó Ë F , � J 1 � ¼ � � � ë ¢ ó Ý � î ° (
! ø ô | Ð ó ¢ ó d » )�
1_ ì ¼ � 1,10d � , 2 ë ¢ ó 1,10 , Æ 1 � 10 � Ý £ ] Æ � Ð ó ¢ ó d X ¼ � Ý Àt � ® �
2_ ì ¼ � s/yellow/black/g � , ã y ^ b 2 ë ¢ ó , Æ X b Ý £ ] � K � Æ � Ð ó ¢ ós/yellow/black/g X ¼ � � ð � ® � 3 Ð ó ¢ ó s/yellow/black/g � , /yellow/black/g s Ý argument , Í � î � ð £ ] � � X b Ý "yellow" W "black"�
7
� � ë ¢ ó Ý / � :
{ � ë è � ó C :
h ó C � î � ó � ¼ � Æ � ` , Þ E Ð ) h � ó Ý £ ] Æ � Ð ó ¢
ó ¼ î Ý _ ì � ® � » A , À t £ ] j � Ý Ï 15 � £ ] , J ¼ �
15d1� Í õ v . ,A À t £ ] j � Ý Ï m � £ ] , J ¼ � md �
{ � ë regular expression2:
£ ] � � b Ð ) regular expression X � î Ý C � ` , J Æ � Ð ó ¢
ó ¼ î Ý _ ì � ® � ¨ ² , 3 regular expression G ¡ Ä 6 � î "/"�
» A ¼ � /t.*t/d , � î À t X b â Ë "t" C Ò Ý £ ] � � Í � ,
. � î � � C - ; * � î Í G C - � ¥ � � � g , ¸ Æ � ) .* � î Ë
"t" C Ò Ý � � C � �
� � ë ¢ ó Ý Í ó :
3 ¼ � � , ^ b � ë ¢ ó ` , � î � I £ ] � Æ � Ð ó ¢ ó X ¼ î Ý _ ì
� ® ; © b × � ë ¢ ó ` , � î © b Ð ) � ë Ý £ ] � � _ ì ; b Ë Í �
ë ¢ ó , A address1,address2 ` , � î E £ ] Æ � _ ì , address1 �
� R � £ ] � , address2 � � � @ £ ] � � E y î � / � , | ì « » � � Ì
C 1 � �
1. » A ¼ �
d
Í � î À t j / X b £ ] � �
2. » A ¼ �
5d
Í � î À t j / Ï " � £ ] �
3. » A ¼ �
1Ð ó ¢ ó d � î £ ] � Ý À t �2� ¢ ï ASPAC Z � "Regular Expression Introduction"�
8
1,/apple/d
Í � î À t £ ] , ã j / Ï × � � / b "apple" C � Ý £ ] � �
4. » A ¼ �
/apple/,/orange/d
Í � î À t £ ] , ã j / â b "apple" C � � â b "orange" C
� Ý £ ] �
2.2.2 b £ ° Ð ó (function)¢ ó
ì ° � � + Û X b sed Ý Ð ó ¢ ó 1 Ý � � �
1n y Ð ó ¢ ó � Þ Ý 1 � , � ¢ ï chapter4�
9
Ð ó ¢ ó � �
: label � ñ script �le / ¼ � ! 8 ¢ � Ý � H �
# � ñ Û �
f g / ) b 8 ! � ë ¢ ó Ý ¼ � �
! � Æ � Ð ó ¢ ó �
= � � £ ] � ó ( line number )�
a \ x � ¸ à ï í á Ý £ ] �
b label Þ Æ � Ý ¼ � ® � ã : � ñ Ý ¢ � � H �
c \ | ¸ à ï í á Ý £ ] ã � £ ] �
d À t £ ] �
D À t pattern space / Ï × Í newline C Ò (nn)G
Ý £ ] �
g ¾ � £ ] � hold space1� pattern space2�
G x � £ ] � hold space � pattern space �
h ¾ � £ ] � pattern space � hold space �
H x � £ ] � pattern space � hold space �
l � � l £ ] � Ý nonprinting character à ASCII
D �
i \ æ á x � ¸ à ï í á Ý £ ] � �
n \ á ì × � £ ] �
N x � ì × � £ ] Õ pattern space�
p � � £ ] �
P � � pattern space / Ï × Í newline C Ò (nn)G
Ý £ ] �
q ® � sed _ ì �
r \ á ¸ j / � �
s � ð C � �
t label � Æ � × � ð Ý _ ì ¼ � , A � � ð W � J Þ _ ì ¼
� ® � : label � Æ � �
w ¶ £ ] Õ ¸ j / �
x ø ð hold space � pattern space / � �
y » ð (transform)C - �
4 Q , sed © b î � X � ¿ Í = b Ã Í _ ì � � Ý Ð ó , ¬ ã ¼ � � � ë ¢ ó õ ¼
� � ¼ � Ý g ) , ô � ¸ sed � W � I Ý _ ì � � �
1pattern space � hold space , � ¢ ï section1.5�
10
2.3 Æ � j n / Ý _ ì ¼ �
Æ � Ý ¼ � H 9 , 3 ú � � î ã ¶ R ¼ è 5 � B , h ` , � Þ 9 ° ¼ � J
§ ; D 3 j n (É A j ( script �le )/ , à ó 4 -f script �le , J ¯ sed Æ �
script �le / Ý _ ì ¼ � � Í ú � Ý } î A ì :
sed -f script_file Z � j
Í � , Æ � script �le / _ ì ¼ � Ý 5 � Î ã î � ì � » A î × ; Ý » � , Í � ;
W A ì ú � :
sed -f ysb.scr yel.dat
Í � , ysb.scr j Ý / � A ì :
1,10d
s/yellow/black/g
¨ ² , 3 ú � � î � � ) ¸ à ó 4 -e � -f , sed Æ � ¼ � 5 � µ Q Î ã ú
� � Ý ¼ Õ � , A Æ � � -f ¡ j n / Ý ¼ � , J ã î � ì Æ � �
2.4 Æ � 9 Í Z � j Ý _ ì
3 sed ú � � î , × g � Æ � _ ì 9 Í Z � j , ¸ Æ « 3 _ ì ¼ � � ¡ � » A ,
� ð white.dat� red.dat� black.dat j / Ý "yellow" C � W "blue" , Í ú � A
ì :
sed -e 's/yellow/blue/g' white.dat red.dat black.dat
î � ú � Æ � ` , sed µ white.dat� red.dat� black.dat 5 � , Æ � _ ì ¼ �
s/yellow/blue/1 , � C � Ý � ð �
2.5 Æ � í � Ý � ×
3 ú � � î Ý ó 4 -n 2 � î í � ã _ ì ¼ � � × � ã G a / � ÿ á , sed º "�
� Ý " Þ £ ] ã pattern space í X Õ ý ã í � j � ¬ ¢ ½ ó 4 -n , � Þ sed 9
1n y _ ì ¼ � s/yellow/blue/g Ý 1 � , � ¢ ï section2.2�
11
"� � Ý " Ý � ® ; W "� � Ý " ã ¸ X Æ � Ý _ ì ¼ � 3 ¼ X � � � Î Í í � �
ã î � � á , ó 4 -n Ä 6 � _ ì ¼ � × R g ) , Í J P ° � ÿ � � � » A
, � � white.dat j / â b "white" C � Ý £ ] � , Í ú � A ì :
sed -n -e '/white/p' white.dat
î « ú � � , ó 4 -n � _ ì ¼ � /white/p 4 × R g ) � × í � � Í � , ó 4 -n
Þ í � � × J É � _ ì ¼ � ;/white/p Þ £ ] � � â b "white" C � � � Ç K �
2Í ú � } P A ì :
sed -n [-e _ ì ¼ � ].. [-f script �le].. [Z � j ..]
39 ° _ ì ¼ � � Ý Ð ó ¢ ó � � Î p� l� s Ý Í � � × �4_ ì ¼ � /white/p � , Ð ó ¢ ó p � î í � pattern space / Ý £ ] �
12
Chapter 3
P »
× � 3 @ j ¸ à _ ì Ý Ä � � , ð m � Æ � � ð Z � � Ý C � � ¦ É � À t �
� ¨ ´ £ ] � � � � ® � Q , × � ø � P _ ì (A vi� emacs)K � � ÿ Õ î �
� � , ¬ Z � × Ë b � � î � _ ì m O ` , J à ¸ Æ _ ì è 5 ^ b [ £ � Í a Þ à
Ü » Ý ] P 1 � A ¢ à sed � � Æ � 9 ° _ ì � � � h ² , 3 Í a P » � , í | ì
� ] P à � Z � Ý m O :
Þ Z � � ...£ ] , Æ � ...(� ® )
A h , ê Ý Î Ý � Þ ¸ Æ � > Ý » W _ ì ¼ � � Í � , " ...£ ] " I , » W ¼
� � Ý � ë ¢ ó � î ; "Æ � ...� ® " I , J » W Ð ó ¢ ó � î � ¨ ² , "Æ
� ...� ® " � ã ó Í Ð ó ¢ ó � î ` , J � ¿ à { � } / ) 9 ° Ð ó ¢ ó 3 , Í ¼
� � P A ì :
� ë ¢ ó {
Ð ó ¢ ó 1
Ð ó ¢ ó 2
Ð ó ¢ ó 3
.
:
}
î � ¼ � � î , Þ E Ð ) � ë ¢ ó Ý £ ] , µ g Æ � Ð ó ¢ ó 1� Ð ó ¢ ó 2� Ð
ó ¢ ó 3 ... � î Ý � ® � ì « & ; , 5 ½ Ü » 1 � sed � ð £ ] � É � � À t £
] � C ¨ ´ £ ] Ý ú � �
2sed ¬ � Ê ) � × ° £ ] � / Ý Z C Ý _ ì � ® , » A * ð � ´ � Ý C � � À t Ï 3 Í
C � � æ á J � £ ] 3 Ï 5 Í C � ¡ � � �1» A , À t 1 � 1000 � £ ] � T Þ Z � � X b £ ] � / Ý "the" C � � ð W "that" �
� �33 b ° � µ ì , ô � à _ ì ¼ � � � Ð ó ¢ ó � » A section3.3 � » Þ �
13
3.1 � ð Z � � Ý £ ]
Sed � � ð Z � � Ý C � � £ ] � � # � £ ] � Í � , � î � ð C � Ý ¼ � �
Ý Ð ó ¢ ó s1 ; � î � ð £ ] � � T £ ] Ý ¼ � � Ý Ð ó ¢ ó c2� î � �
µ | ì « ë Í » � 1 � �
� » × . Þ Z � � â "machine" C � Ý £ ] � � Ý "phi" C � , � ð W
"beta" C � � Í ú � � A ì :
sed -e '/machine/s/phi/beta/g' input.dat3
� » Þ . Þ Z � � Ï 5 � £ ] , � ð W � "Those who in quarrels interpose,
must often wipe a bloody nose."� Í ú � � A ì
sed -e '5c\
Those must often wipe a bloody nose.
' input.dat
� » ë . Þ Z � � 1 � 100 � Ý £ ] , � ð W A ì Ë � £ ] :
How are you?
data be deleted!
J Í ú � � A ì
sed -e '1,100c\
How are you?\
data be deleted!
' input.dat
33 ¡ « Ý / � � ,Z � j K | input.dat ¼ � � �1� ¢ ï section 4.12� ¢ ï section 4.5
14
3.2 ¦ � Z � � Ý £ ]
¸ à ï � à sed � Ý hold space õ D _ ì � Ý £ ] � à Ð ó ¢ ó w4 Þ Z �
£ ] ¦ � Õ ¸ j / ; D � T à Ð ó ¢ ó r5Þ ¸ j / � ¦ Õ Z � / � Hold space Î
sed à ¼ õ D pattern space2 / £ ] Ý õ D , sed Æ � Ð ó ¢ ó h� H1 ` ,
º Þ pattern space £ ] õ D Õ hold space; Æ � Ð ó ¢ ó x� g� G3 ` , º Þ
õ D Ý £ ] ã Õ pattern space � ì « Ü ë Í » � 1 � �
� » × . Þ Z � � Ý G 100 £ ] , ¦ Õ Z � � Ï 300 ¡ í � � Í ú � � A ì :
sed -f mov.scr Z � j
mov.scr j Ý / �
1,100{
H
d
}
300G
Í � ,
1,100{
H
d
}
¸ � î Þ Z � � Ý G 100 £ ] , � ; D 5 3 hold space � ¡ À t 6 ; � ¼ �
300G7 � î , Þ hold space / Ý £ ] , x � 3 Z � � Ý Ï 300 £ ] ¡ í
� �
1¢ ï section 4.19-202¢ ï section1.43¢ ï section 4.21-234¢ ï section 4.95¢ ï section 4.84¢ ï section 4.105¢ ï ! � � , n y Ð ó ¢ ó h Ý 1 �6¢ ï ! � � , n y Ð ó ¢ ó d Ý 1 �7¢ ï section 4.22
15
� » Þ . Þ Z � � â "phi" C � Ý £ ] � , ¦ � mach.inf j � ; D � Í ú �
� A ì :
sed -e '/phi/w mach.inf' Z � j
� » ë . Þ mach.inf j / � , ¦ � Z � � â "beta" C � Ý £ ] � � Í ú � �
A ì :
sed -e '/beta/r mach.inf' Z � j
¨ ² , ã y sed Î × stream8_ ì , Æ § ¡ î Z � ¡ « £ ] � � � x � Ý ¦ Õ Z
� G « �
8¢ ï section1.4
16
3.3 À t Z � � Ý £ ]
. sed Î × � _ ì , X | sed � � | À t Í ½ £ ] � T J Í £ ] � × �
à Ð ó ¢ ó d1 T D2 ¼ � î � ì « Ü Ë Í » � 1 � �
� Þ Z � / X b è ç � � I À t � Í ú � �
sed -e '/^$/d' Z � j
regular expression3 ^$ � î è ç � � Í � , ^ § × Í ¡ C � Ä 6 3 � ´ ; $
§ × Í G C � Ä 6 3 � � �
� Þ Z � / = � Ý è ç � , À t ¸ Æ W × � � Í ú � �
sed -e '/^$/{
N
/^$/D
}' Z � j
Í � , Ð ó ¢ ó N4� î , Þ è ç � Ý ì × � £ ] x � � pattern space / �
Ð ó ¢ ó /^$/D � î , x � Ý Î è ç � ` , À t Ï × � è ç � , � v y ì
Ý è ç � J � ¥ ± Æ � ¼ � × g � ¼ � ¥ ± Æ � × g , À t × � è ç � , A
h D « à � è ç � ¡ x � Ý & è ç � c , Æ = � Ý è ç � t ¡ © y × è
ç � � í � �
1¢ ï section 4.2�2¢ ï section 4.17�3¢ ï ! � A , T ASPAC Z � "Regular Expression Introduction"�4¢ ï section 4.16
17
3.4 ¨ ´ Z � � Ý £ ]
Sed � | Æ � v « UNIX ú � grep Ý � � � § ¡ î , � à regular expression1
� î Ý £ ] K � � ¨ ´ 2 � » A , Þ Z � � â b "gamma" C � Ý £ ] � í � � J
Í ú � � A ì :
sed -n -e '/gamma/p' Z � j
¬ Î , sed Î � _ ì , ¸ Ý ¨ ´ Ã Í î Î | × � � � � . h , × ° C � .
ð � � � t W Ë I ` , × � Ý ] ° Ç � � � � h ` , µ Ä 6 | ) ¿ Ë � Ý ] P ¼
¨ ´ 9 ° £ ] � Í � µ A ì « » � :
» . Þ Z � � â "omega" C � Ý £ ] í � � Í ú � � A ì
sed -f gp.scr Z � j
gp.scr j Ý / � A ì :
/omega/b
N
h
s/.*\n//
/omega/b
g
D
3 î � sed script3 / , . ¢ ½ Ð ó ¢ ó b4 � W v « C + � � Ý case statement
� x , ¸ ÿ sed � 5 ½ � § £ ] / â "omega" C � ; "omega" C � � t W
Ë � ; | C £ ] / ^ b "omega" C � Ý � µ � # ì ¼ µ µ î � Ý ë Ë � µ , Þ sed
script 5 W ì « ë I ¼ D ¡ �
1. £ ] / â "omega" , J Æ � _ ì ¼ �
/omega/b
¸ � î £ ] / â "omega" C � ` , sed � à � E ¸ Æ � ¡ « Ý ¼ � , �
à # Þ ¸ í � �
1� ¢ ï ! � A , T ASPAC Z � "Regular Expression Introduction"�2sed � X | ? à Ý × I æ . , ¯ @ î , µ Î . ¸ . & à regular expression¼ � î
£ ] �39 � , sed script Î ¼ gp.scr j Ý / � � ¸ � î 9 × g sed Æ � Ý _ ì ¼ � �4¢ ï section 4.24�
18
2. £ ] / ^ b "omega" , J Æ � _ ì ¼ � A ì
N
h
s/.*\n//
/omega/b
Í � , Ð ó ¢ ó N4 , ¸ � î Þ ì × � £ ] \ á ¸ ÿ pattern space / â G ¡
Ë � £ ] � Ð ó ¢ ó h5 , ¸ � î Þ pattern space / Ý G ¡ Ë � £ ] D á
hold space � Ð ó ¢ ó s/.*\n// , ¸ � î Þ pattern space / Ý G ¡ Ë �
£ ] ) ¿ 6 W × � � /omega/b , ¸ � î A � ) ¿ ¡ Ý £ ] / â "omega" C
� , J � à � Æ � ¸ � ¡ Ý ¼ � , � Þ h £ ] � � í � ;
3. ) ¿ ¡ Ý £ ] µ � � â "omega" , J Æ � _ ì ¼ � A ì
g
D
Í � , Ð ó ¢ ó g7 , ¸ � î Þ hold space / ) ¿ G Ý Ë � £ ] w / pattern
space� Ð ó ¢ ó D8 , ¸ � î À t Ë � £ ] � Ý Ï × � £ ] , ¬ ¯ y ì Ý £
� £ ] , ¥ ± Æ � sed script� A h , P ¡ Ý £ ] � / T � Ý C � � � ¨
´ � � �
4¢ ï section 4.16�5¢ ï section 4.19�6 h Ð ó ¢ ó , � î � ð * ( t * ) pattern space / Ë � Ý ð � B r � Æ sed -
pattern space / © b × � £ ] �7¢ ï section 4.21�8¢ ï section 4.17�
19
Chapter 4
+ Û Ð ó ¢ ó
Í a Þ | × ; × Í Ð ó ¢ ó Ý ] P ,+ Û X b sed è º Ý Ð ó ¢ ó , Í � b
s� d� a� i� c� p� l� r� w� y� !� n� q� =� #� N� D� P� h� H� g� G� x�
b� :label� t� ¨ ² , 3 & ; � , ´ � � � + Û Ð ó ¢ ó � � , # ½ 1 � Ð ó ¢ ó
� � ë ¢ ó g ) Ý } P , � Í � ô × ¿ à � sed Æ � h Ð ó ¢ ó Ý � ® � � �
4.1 s
Ð ó ¢ ó s � î � ð (substitute)Z � / C � � Í ¼ � } P A ì :
[address1[,address2]]s/pattern/replacement/[ ag]
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó s t 9 � Ë Í � ë ¢ ó g ) �
2. n y "s/pattern/replacement/[ ag]"1 b ì « ¿ F 1 � :
� pattern : ¸ reguler expression C � � ¸ � î Z � � � � � ð Ý C
� �
� replacement : ¸ × � C � � ¬ Í / � ¨ ì � C - b © ½ � L :
(a) & : � � Í G pattern C � � » A
sed -e 's/test/& my car/' £ ] j (
1Í � , /pattern/replacement/[ ag] Ð ó ¢ ó s Ý argument�
20
¼ � � , & � � pattern C � "test"� Æ Æ � ¡ , £ ] j Ý
"test" � � ð W "test my car"�
(b) \n : � � pattern � � Ï n Í \( � \)1 X À R ¼ Ý C � � » A
sed -e 's/\(test\) \(my\) \(car\)/[\2 \3 \1]/' £ ]
j (
¼ � � , \1 � î "test"� \2 � î "my"� \1 � î "car" C � �
Æ Æ � ¡ , £ ] j Ý "test my car" � � ð W "[my car test]"�
(c) \ : � à ¸ ¼ � æ × ° © � Ð r (A î � Ý & � \)Í � C « î Ý �
L , T à ¸ ¼ � � ð � �
� ag : x � à ¸ ¼ � × × ° � ð � µ :
{ ag g ` , � � � ð X b Ð ) (match)Ý C � �
{ ag è � ó C m ` , � � � ð � / Ï m Í Ð ) Ý C � �
{ ag p ` , � � � ð Ï × Í Ð ) pattern Ý C � ¡ , Þ £ ]
í � ý ã í � j �
{ ag w w�le ` , � � � ð Ï × Í Ð ) pattern Ý C � ¡ ,
í � Õ w�le j / (A � w�le � D 3 , J º ¥ ± � @ ( w�le Ý
j n )�
{ ^ b ag ` , J Þ £ ] � / Ï × Í Ð ) pattern Ý C � |
replacement C � ¼ � ð �
� delimiter : 3 "/pattern/replace/[ ag] " � "/" � W × delim-
iter� t Ý è ç (blank)� ð � (newline) � ² , ¸ à ï � à � ¢ C - ®
delimiter� » A ì � _ ì ¼ �
s#/usr#/usr1#g
î � ú � � # delimiter� A � à "/" � delimiter , J sed º Þ
pattern � replacement � Ý "/" W delimiter � s ß ý 0 �
3. P » :
� Þ ê : � ð input.dat j (¡ « A � ^ b © ½ ¼ � , í � ' Z � j
( input.dat)/ "1996" C � W "1997" , ! ` Þ 9 ° £ ] � D á
year97.dat j / �
� 1 � : à Ð ó ¢ ó s ¼ î sed Þ "1996" C � � ð W "1997" , ¨ ² à
s argument � Ý ag w ¼ î sed Þ � ð Ä Ý £ ] � D á year97.dat
j / �
� sed ú � � :
21
sed -e 's/1996/1997/w year97.dat' input.dat
4.2 d
Ð ó ¢ ó d � î À t £ ] � , Í ¼ � } P A ì :
[address1[,address2]]d
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó d t 9 � Ë Í � ë ¢ ó g ) �
2. sed Æ � À t � ® � µ A ì :
(a) Þ pattern space / Ð ) � ë ¢ ó Ý £ ] À t �
(b) Þ ì × � £ ] \ pattern space �
(c) ¥ ± Æ � sed script�
3. P » : � ¢ � section 3.3�
4.3 a
Ð ó ¢ ó a � î Þ £ ] x � Õ Z � � � Í ¼ � } P A ì :
[address1]a\¸ à ï X í á Ý £ ]
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó a t 9 � × Í � ë ¢ ó g ) �
2. Ð ó ¢ ó a å # ½ "\" C - à ¼ � î h � � @ , ¸ à ï X í á Ý £ ] Ä 6 �
ì × � í á � A � £ ] ø Ä × � , J 6 3 N � Ý � � � á "\"�
3. sed Æ � x � � ® � µ A ì : pattern space / £ ] í � ¡ , sed « ½ í
� ¸ à ï X í á Ý £ ] �
1¢ � ASPAC Z � "Introduction Regular Expression"
22
4. P » :
� Þ ê : x � "9 � ® ¼ � Ù " 3 â "UNIX" C � Ý £ ] � ¡ � � '
input.dat j Ý / � A ì :
UNIX
� 1 � : à Ð ó ¢ ó a Þ X í á Ý £ ] x � 3 â "UNIX" C � Ý £ ] �
¡ �
� sed ú � � A ì :
sed -e '/UNIX/a\
9 � ® ¼ � Ù
' input.dat
Æ � î � ú � ¡ , Í í � � � A ì :
UNIX
9 � ® ¼ � Ù
4.4 i
Ð ó ¢ ó i � î Þ £ ] æ á Z � � � Í ¼ � } P A ì :
[address1]i\¸ à ï X í á Ý £ ]
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó i t 9 � × Í � ë ¢ ó g ) �
2. Ð ó ¢ ó i å # ½ "\" C - à ¼ � î h � � @ , ¸ à ï X í á Ý £ ] Ä 6 �
ì × � í á � A � £ ] ø Ä × � , J 6 3 N � Ý � � � á "\"�
3. sed Æ � æ á � ® Ý � µ A ì : 3 pattern space / £ ] í � G , sed � í
� ¸ à ï X í á Ý £ ] �
4. P » :
� Þ ê : Þ "Z a Ì J ò y � ³ @ ~ o " æ 3 input.dat j � â "o � :
A G ï " Ý £ ] � � G � � ' input.dat j / � A ì :
o � : A G ï
23
� 1 � : à Ð ó ¢ ó i Þ £ ] � "Z a Ì J ò y � ³ @ ~ o " æ 3 â "o
� : A G ï " Ý £ ] � � G �
� sed ú � � A ì :
sed -e '/o � : A G ï /i\
Z a Ì J ò y � ³ @ ~ o
' input.dat
Æ � î � ú � ¡ Ý í � A ì :
Z a Ì J ò y � ³ @ ~ o
o � : A G ï
4.5 c
Ð ó ¢ ó c � î ; � Z � � Ý £ ] � Í } P A ì :
[address1[,address2]]c\¸ à ï X í á Ý £ ]
E î � } P b ì « ¿ F 1 � :
� Ð ó ¢ ó c t 9 � Ë Í � ë ¢ ó g ) �
� Ð ó ¢ ó c å # ½ "\" C - à ¼ � î h � � @ , ¸ à ï X í á Ý £ ] Ä 6 �
ì × � í á � A � £ ] ø Ä × � , J 6 3 N � Ý � � � á "\"�
� sed Æ � ; � � ® Ý � µ : 3 pattern space / £ ] í � ` , sed ; � ¸ W
¸ à ï X í á Ý £ ] �
� P » : ¢ � section 3.1 � » Þ � ë �
4.6 p
Ð ó ¢ ó p � î � � £ ] � Í ¼ � } P A ì :
[address1[,address2]]p
E y î � } P b ì « ¿ F 1 � :
24
1. Ð ó ¢ ó p t 9 � Ë Í � ë ¢ ó g ) �
2. sed Æ � � � � ® Ý � µ A ì : sed ¾ n × pattern space / � � ý ã í
� j �
3. P » : ¢ � section 3.4 � � Ý / � �
4.7 l
Ð ó ¢ ó l , t � Þ £ ] � Ý nonprinting character | ASCIID � � ² , Í y í
� Ð ó ¢ ó p 8 ! � » A , Þ ì « input.dat j � Ý ^[ | ASCII D � �
The Great ^[ is a movie starring Steve McQueen.
Æ � ú � sed -e 'l' input.dat ¡ , J í � � � A ì :
The Great \003 is a movie starring Steve McQueen.
The Great is a movie starring Steve McQueen.
î � Ï Þ � £ ] sed Ý � � í � 1 �
4.8 r
Ð ó ¢ ó r � î \ á ¸ j n / � Õ Z � � � Í ¼ � } P A ì :
[address1]r ¸ j ( Ì
E y î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó r t 9 � × Í � ë ¢ ó g ) �
2. 3 ¼ � � , Ð ó ¢ ó r � ¸ j ( Ì , © � b × è } �
3. sed Æ � \ á � ® Ý � µ A ì : 3 pattern space / £ ] í � ¡ , sed \ �
¸ j Ý / � « ½ í � � ¸ j � D 3 ` , sed ï ø Æ � Í ¸ ¼ � � � º b �
¢ ý 0 G > ® ß �
4. P » : ¢ � section 3.1 � » ë �
1� ¢ ï section 1.4 T section 2.5�
25
4.9 w
Ð ó ¢ ó w � î Þ Z � � Ý ¶ Õ ¸ j / � Í ¼ � } P A ì :
[address1[,address2]]w ¸ j ( Ì
E y î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó w t 9 � Ë Í � ë ¢ ó g ) �
2. 3 ¼ � � , Ð ó ¢ ó w � ¸ j ( Ì , © � b × è } �
3. sed Æ � ¶ � � ® Ý � µ A : Þ pattern space / £ ] ¶ Õ ¸ j / � £ ] ¶
á ` , º ã � (overwrite)æ ¼ j n / Ý £ ] � ¨ ² , ¸ j � D 3 ` , sed
º ¥ ± ® ß (creat)¸ �
4. P » :¢ � section 3.1 � » Þ �
4.10 y
Ð ó ¢ ó y � î » ð £ ] � Ý C - � Í ¼ � } P A ì :
[address1[,address2]]y/xyz.../abc.../
E y î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó t 9 g ) Ë Í � ë ¢ ó �
2. ¼ � � , /abc.../xyz.../(x� y� z� a� b� c � � Ø ° C - ) y Ý argu-
ment � Í � abc... � xyz... Ý C - Í ó Ä 6 8 ! �
3. sed Æ � » ð ` , Þ pattern space / £ ] / Ý a C - » ð W x C - � b
C - » ð W y C - � c C - » ð W z C - ...�
4. P » :
� Þ ê : Þ input.dat j � Ý � ¶ C Ò ; W � ¶ � � ' input.dat j Ý /
� A ì :
Sodd's Second Law:
Sooner or later, the worst possible set of
circumstances is bound to occur.
26
� 1 � :¿ à Ð ó ¢ ó y ¼ î sed � C Ò � � Ý » ð �
� sed ú � � A ì :
sed -e '
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
' input.dat
Æ � î � ú � í � � � A ì :
SODD'S SECOND LAW:
SOONER OR LATER, THE WORST POSSIBLE SET OF
CIRCUMSTANCES IS BOUND TO OCCUR.
4.11 !
Ð ó ¢ ó ! � î � Æ � Ð ó ¢ ó � b A ì ¼ � ` ,
[address1[,address2]]!Ð ó ¢ ó
� î , E Ð ) � ë ¢ ó � £ ] � Æ � Ð ó ¢ ó � » A À t , t Ý â "1996" C
� , X b £ ] � , J Æ � A ì ú �
sed -e '/1996/!d' input.dat
4.12 n
Ð ó ¢ ó n � î \ á ì × � £ ] � Í ¼ � } P A ì :
[address1[,address2]]n
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó n t 9 g ) Ë Í � ë ¢ ó �
2. sed Æ � \ á ì × � � ® Ý � µ A ì :
(a) í � 3 pattern space Ý £ ] �
(b) Þ ì × � £ ] \ Õ pattern space�
27
(c) Æ � ì × Í _ ì ¼ � �
3. P » 1 :
� Þ ê : í � input.dat j / � ó � £ ] � � ' input.dat j / � A ì :
The
UNIX
Operation
System
� 1 � : 3 ú � � î
(a) | ó 4 -n , Þ £ ] í � Ý � × J 2 » � ¼ � �
(b) ¿ à Ð ó ¢ ó n Þ ì × � £ ] (� ó � )ã � pattern space / Ý
£ ] � (� ó � )�
(c) ¿ à Ð ó ¢ ó p Þ pattern space / Ý £ ] (� ó � )í � �
t ¡ , J Í í � © b æ � j / Ý � ó � £ ] �
� sed ú � � A ì :
sed -n -e 'n' -e 'p' infro.dat
Æ � î � ú � ¡ , í � Ý � � A ì :
UNIX
System
4.13 q
Ð ó ¢ ó q � î ® Ò sed � Í ¼ � } P A ì :
[address1]q
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó q t 9 g ) × Í � ë ¢ ó �
2. sed Æ � ® Ò � ® ` , ¸ � c í á pattern space £ ] , ! ` � c £ ] X Õ
ý ã í � j �
1� � section4.18 � Ý P » f ´ �2¢ ï section 2.5�
28
3. P » :
� Þ ê : E Z � j Æ � script �le / Ý _ ì ¼ � , t & Â Õ "Linux" C
� �
� 1 � : P ¡ script �le / Î ¢ Ë ¼ � , ¸ à ï © � 3 ú � � î à ¼
� /Linux/q , Ð ó ¢ ó q º ú � sed Â Õ "Linux" ` � ® Ò � ® �
� sed ú � � A ì :
sed -e '/Linux/q' -f script_file input.dat
4.14 =
Ð ó ¢ ó = � î � � £ ] Ý � ó � Í ¼ � } P A ì :
[address1,[address2]]=
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó = t 9 g ) Ë Í � ë ¢ ó �
2. Æ � ` , � ó Þ 3 £ ] í � G � í � �
3. P » :
� Þ ê : � � input.dat j / £ ] � ó � � ' input.dat Ý / � A ì :
The UNIX
Operating System
� 1 � : à Ð ó ¢ ó = ¼ � � £ ] Ý � ó �
� sed ú � � A ì :
sed -e '=' input.dat
Æ � î � ú � ¡ , í � Ý � � A ì :
1
The UNIX
2
Operating System
29
4.15 #
3 script �le / , Ð ó ¢ ó # ¡ Ý Z C ¥ � � ¥ � Z C ø Ä 9 � ` , Í �
6 | "\" ð � C - 8 â �
4.16 N
Ð ó ¢ ó N � î x � ì × � £ ] 3 pattern space / � Í ¼ � } P A ì :
[address1,[address2]]N
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó N t 9 g ) Ë Í � ë ¢ ó �
2. sed Æ � ` , Þ ì × � £ ] \ á ¬ x � 3 pattern space / , £ ] � | ð
� C - (embedded newline character)5 â � h ² , 3 � ð ` , ð � C - �
à \n ¼ match�
3. P » :
� Þ ê : Þ ì � Ë � £ ] ) ¿ � � ' input.dat Ý / � A ì :
The UNIX
Operating System
� 1 � : � ¿ à Ð ó ¢ ó N Þ Ë � £ ] H y pattern space / , 3 ¿ à
Ð ó ¢ ó s/\n/ / Þ Ë � £ ] Ý 5 â r \n | è ç � � , A h Ë �
£ ] � W × � í � �
� sed ú � � A ì :
sed -e 'N' -e 's/\n/ /' input.dat
Æ � î � ú � ¡ , Í í � Ý � � A ì :
The UNIX Operating System
4.17 D
Ð ó ¢ ó D � î À t pattern space / Ý Ï × � £ ] � Í ¼ � } P A ì :
30
[address1,[address2]]D
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó D t 9 g ) Ë Í � ë ¢ ó �
2. Ð ó ¢ ó D � d Ý f ´ A ì :
(a) pattern space / © b × £ ] � ` , D � d ® à 8 ! �
(b) pattern space / b 9 � £ ] � `
i. D � î © À t pattern space / Ï × � £ ] ; d J � À t �
ii. D � î Æ � À t ¡ , pattern space / � x � ì × � £ ] , �
Þ y ì Ý £ ] ¥ ± Æ � sed script ; d J \ á ì × � ¡ Æ � sed
script�
3. P » : ¢ � section 3.3 Ý Ï Þ Í » � �
4.18 P
Ð ó ¢ ó P � î � � pattern space / Ý Ï × � £ ] � Í ¼ � } P A ì :
[address1,[address2]]P
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó P t 9 g ) Ë Í � ë ¢ ó �
2. P � p , t Ý « E Ý pattern space / Ý £ ] � ó � ! ² , Í ¸ í 8 ! �
3. P » 1 :
� Þ ê : í � input.dat j / � ó � £ ] � � ' input.dat j / � A ì :
The
UNIX
System
� 1 � : 3 ú � � î
1� � section4.12 � Ý P » f ´ �
31
(a) | ó 4 -n , Þ £ ] í � Ý � × J 2 » � ¼ � �
(b) ¿ à Ð ó ¢ ó N Þ � ó � x � � pattern space / � ó � ¡ �
(c) ¿ à Ð ó ¢ ó P Þ pattern space / Ý Ï × � (� ó � )í � �
3 � ó � í � ¡ , pattern space / y ì Ý £ ] � (� ó � )J � w a í
� � t ¡ , J Í í � © b æ � Ý � ó � £ ] �
� sed ú � � :
sed -n -e 'N' -e 'P' infro.dat
Æ � î � ú � ¡ , í � Ý � � A ì :
The
System
4.19 h
Ð ó ¢ ó h � î õ D pattern space Ý £ ] � hold space� Í ¼ � } P A ì :
[address1,[address2]]h
E î � } P b ì « ¿ F 1 � :
1. Ð ó ¢ ó h t 9 g ) Ë Í � ë ¢ ó �
2. sed Æ � õ D � ® ` , º � * (overwrite) hold space / æ ¼ Ý £ ] �
3. sed � I Æ � � @ ` , hold space / £ ] º � � z t �
4. P » :¢ � section 3.4 Ý » � �
4.20 H
Ð ó ¢ ó H � h ° × - ½ Î , sed Æ � h ` , £ ] � * (overwrite) hold space
/ æ ¼ Ý £ ] , � H , £ ] J Î "x � (append)" 3 hold space æ ¼ £ ] ¡ � »
Þ � ¢ � section 3.2 � » × �
2¢ ï section 2.5�
32
4.21 g
Ð ó ¢ ó g � î � Ð ó ¢ ó h 8 D Ý � ® , ¸ � î Þ hold space / £ ] w /
pattern space / � Í ¼ � } P A ì :
[address1,[address2]]g
1. Ð ó ¢ ó g t 9 g ) Ë Í � ë ¢ ó �
2. sed Æ � w / � ® ` , £ ] � * (overwrite)1 pattern space / æ ¼ Ý £ ] �
3. » Þ :¢ � section 3.4 Ý » � �
4.22 G
Ð ó ¢ ó G � g ° × - ½ Î , sed Æ � g ` , £ ] � * (overwrite) pattern
space / æ ¼ Ý £ ] , � G , £ ] J Î "x � (append)" 3 pattern space æ ¼
£ ] ¡ � » � � ¢ � section 3.2 » × �
4.23 x
Ð ó ¢ ó x � î ø ð hold space � pattern space / Ý £ ] � Í ¼ � } P A ì :
[address1,[address2]]x
Ð ó ¢ ó x � I � Í ¸ � § hold space Ý Ð ó ¢ ó × R g ) � » A , Þ
input.dat j / Ï 1 £ ] ã � Ï 3 � £ ] � h ` , à Ð ó ¢ ó h � x ¼ g ) � Í
� , | Ð ó ¢ ó h Þ Ï 1 £ ] D á hold space ; Ï 3 � £ ] � ¨ 3 pattern
space , | Ð ó ¢ ó x ø ð hold space � pattern space Ý / � � A h , Ï 3 �
£ ] µ � Ï 1 £ ] � � � Í ú � � A ì :
sed -e '1h' -e '3x' input.dat
1¥ � h ` , 4 Q £ ] Î w / pattern space , ¬ hold space Ý / � � Î � � �
33
4.24 b� :label
Ð ó ¢ ó : � Ð ó ¢ ó b � 3 sed script / � ñ v « BASIC + � � GOTO ¼
� Ý � � � Í � , Ð ó ¢ ó : � ñ ý B ;Ð ó ¢ ó b Þ ì × Í Æ � Ý ¼ � branch
Õ ý B � Æ � � Ð ó ¢ ó : � b , 3 script �le / g ) Ý � µ A ì
.
.
.
_ ì ¼ � m1
:B r
_ ì ¼ � m2
.
.
.
[address1,[address2]]b [B r ]
Í � , sed Æ � � ¼ � [address1,[address2]]b [B r ] ` , A pattern space /
Ý £ ] Ð ) � ë ¢ ó , J sed Þ ì × Í Æ � Ý � H branch � ã :B r 1 ' � Ý ý
B � , ô µ Î � ã "_ ì ¼ � m2" ... Æ � � ¨ ² , A � ¼ � � Ð ó ¢ ó b ¡ ^ b
B r , J sed Þ ì × Í Æ � Ý ¼ � branch Õ script �le Ý t ¡ , ¿ à h � ¸ sed
script / b v « C + � � Ý case statement � x �
P » :
� Þ ê : Þ input.dat j / £ ] � Ý � � C Ò ¥ « � 40 g � � ' input.dat
j Ý / � A ì :
A
B
C
� 1 � : à ¼ � b p1 � :p1 x W Æ � ¦ � C Ò Ý ] º (loop) , ! ` 3 C Ò � ¨
40 Í ` , ô à ¼ � b ¼ ® � ] º � ì « µ | j / Ï × � £ ] "A" » , à
� ¸ A ¢ = � 9 x � 39 Í "A" 3 ! × � :
1. à ¼ � s/A/AA/(¢ ï section4.1)Þ "A" � ð W "AA"�
1¥ � ":" � B r � � b è }
34
2. à ¼ � b p1 � :p1 x W ] º (loop) , ¸ ê Ý ¸ î � � ® � D « Ý Æ
� � N Æ � × g ] º , J £ ] � î Ý "A" µ 9 � × Í � » A , Ï × g
] º £ ] � � W "AA" , Ï Þ g ] º £ ] � � W "AAA" ...�
3. à ¼ � /[ABC]\{40\}/b1 ¼ ® � c ] º Ý f � � £ ] � b = �
40 Í A � ¨ ` , Ð ó ¢ ó b Þ Æ � Ý ¼ � ® Õ t ¡ , � c E h � Ý
_ ì �
! ø , E Í ¸ £ ] � ô A ! î � Ý ] P Æ � �
� sed ú � � A ì :
sed -e '{
:p1
/A/s/A/AA/
/B/s/B/BB/
/C/s/C/CC/
/[ABC]\{40\}/b
b p1
}' input.dat
4.25 t
Ã Í î , Ð ó ¢ ó t � Ð ó ¢ ó b Ý � � v « , t Ý 3 Æ � t Ý branch G , º
� � ? � Í G Ý � ð ¼ � b ^ b Æ � � ð W � ² � 3 script �le / Ý � µ A ì :
.
.
.
_ ì ¼ � m1
:B r
_ ì ¼ � m2
.
.
.
s/.../.../
[address1,[address2]]t [B r ]
_ ì ¼ � m3
1� ë ¢ ó [ABC]f40g � î 40 Í A C Ò T 40 Í B C Ò T 40 Í C C Ò � Í � [ABC]
� î "A" T "B" T "C"; Í ¡ Ý f40g � î Í G Ý C Ò b 40 Í � regular expression � ¢ï appendix A�
35
Í � , � Ð ó ¢ ó b � ! � 3 y , Æ � Ð ó ¢ ó t branch ` , º � l ã Í G × Í
� ð ¼ � W � � Í � A W � , J Æ � branch ; � W � , J � branch , � µ � Æ �
ì × Í _ ì ¼ � , » A î « Ý _ ì ¼ � m3�
P » :
� Þ ê : Þ input.dat j � £ ] A1 � ð W C1� C1 � ð W B1� B1 � ð W
A1� input.dat j Ý / � A ì :
� r
B1
A1
B1
C1
A1
C1
� 1 � : input.dat j � � I £ ] � © m � Æ � × g � ð � ® , ¬ � ¹ £ ]
� � ð 9 g , X | ¿ à Ð ó ¢ ó t 3 sed script / � W × v « C + � �
case statement � x , ¸ N � £ ] � ð × g ¡ � ñ Ç à Ð ó ¢ ó t ® Ò � ð
_ ì �
� sed ú � � :
sed -e '{
s/A1/C1/
t
s/C1/B1/
t
s/B1/A1/
t
}' input.dat
36
Appendix A
ð à Ý regular expression
1) û ; C - : ã û ; C - X à W Ý regular expression Í � L � æ C �
C « � L 8 ! �
2) ^C � : § × C � Ä 6 � ¨ y � ´ �
3) $C � : § × C � Ä 6 � ¨ y � � �
4) . : � î � � × C - �
5) [...] : C - / ) , à | � î Ë � À r X b C - � Ý � × Í ,A
[^...]� î Ë � À r X b C - | ² Ý C - �
6) - : C - / ) � � à "-"¼ � C - Ý P � �
7) * : à | � � Í G Ý C - (T C - / ) )� ¥ « � � 9 g �
8) \n : � î ¶ á ± � C - (imbedded new line character)�
9) \(...\) : y regular expression � ¸ à "\(""\)" ¼ À � × I Ý
regular expression ; Í ¡ � à "\1"¼ � î Ï × Í � "\("\)"À � Ý I
� u regular expression � ¸ à ó g Ý "\(""\)"¼ À � � ! Ý I
, J µ g ¸ à "\1","\2","\3",...(t 9 � Õ "\9")�
¨ ² � ! ¿ ¬ î | regular expression1� î sed _ ì ¼ � / address ` º b × °
� ! Ý § × , � Þ � µ ¢ ï appendix B�
1� ¢ ï ASPAC Z � "Regular Expression Introduction"
37
Appendix B
HP-UX Release 9.01 �SunOS 5.4 / sed E regular
expression � & Ë © � C - Ý #å � æ
regular expression Ý © � C - HP-UX Release 9.01 SunOS 5.4
. # å # å
* # å # å
^ # å # å
$ # å # å
\ # å # å
[ ] # å # å
\( \) � \1 ... \9 ) à # å # å
\{¥ � g ó \} # å # å
\{ì § ,î § \} # å # å
\ì § ,\} # å # å
\< \> � # å # å
+ � # å � # å
? � # å � # å
| � # å � # å
( ) � # å � # å
& # å # å
38
Bibliography
[1] Lee E.McMahon. SED - A Non-interactive Text Editor , AT&T Bell
Laboratories Murray Hill,New Jersey 07947.
[2] Dale Dougherty. sed & awk , O'Reilly & Associates , Inc.1990.
[3] SunOs5.1 Editing Text Files , Sun Microsystem,Inc.1992.
[4] HP 9000 computers { Text Processing : User Guide ,Hewlett-Packard
Company.1991.
[5] f � ¼ . � � _ ì Z � Ý � Ì - SED � + .� ³ @ ~ o � Õ � T ; G 12à Ï 2
� .
[6] Regular Expression Introduction. � ³ @ ~ o � Õ � T ASPAC � �
94019.1995
39