5
Làm quen với SED - Stream EDitor Stream EDitor - sed - là một trình soạn thảo không tương tác được hỗ trợ trên rất nhiều hệ thống Unix/Linux. Nó thực hiện thông dịch một script và thực hiện các action trong script đó. sed là một tiện ích dạng luồng (stream) bởi cũng giống như nhiều chương trình Unix khác, input sẽ đi từ input stream tới chương trình rồi đi ra standard output stream. Input có thể đến từ một file hoặc tới từ pipe hoặc thậm chí trực tiếp từ standard input. Output của sed có thể đi tới standard output hoặc định hướng tới 1 file hoặc tới một pipe nào đó. 1. Đặc trưng và thế mạnh của SED - chỉnh sửa tự động một hoặc nhiều file - đơn giản hóa các thao tác chỉnh lặp đi lặp lại trên nhiều file - cho phép viết các chương trình chuyển đổi hữu dụng 2. Cách thức hoạt động của SED SED làm việc trên từng dòng trong file text do đó chu trình xử lý của nó sẽ như sau: - mỗi dòng được copy vào một vùng nhớ đệm "pattern space" nơi sẽ diễn ra các thao tác xử lý - các lệnh chỉnh sửa trong script được thực thi - các lệnh được xử lý trên tất cả các dòng trừ khi một dòng nào đó không thỏa mãn - nếu một lệnh thực hiện thay đổi input, do các lệnh chỉ làm việc trên pattern space do đó dữ liệu thực sự sẽ không còn là của input ban đầu - file input thực chất không bị thay đổi mà các thay đổi chỉ diễn ra trên một bản sao của nó ở pattern space. Bản copy này sẽ gửi tới standard output (mặc định) - sed cũng sử dụng một vùng nhớ đệm riêng "hold space" có khả năng lưu dữ liệu cho các thao tác truy xuất sau đó. 3. Cú pháp dòng lệnh Cú pháp của SED có thể ở hai dạng như sau: sed [-n] [-e] 'command' file(s) sed [-n] -f script_file(s)

Làm Quen Với SED

Embed Size (px)

DESCRIPTION

Làm Quen Với SED

Citation preview

Lm quen vi SED -StreamEDitorStream EDitor - sed - l mt trnh son tho khng tng tc c h tr trn rt nhiu h thng Unix/Linux. N thc hin thng dch mt script v thc hin cc action trong script . sed l mt tin ch dng lung (stream) bi cng ging nh nhiu chng trnh Unix khc, input s i t input stream ti chng trnh ri i ra standard output stream.Input c th n t mt file hoc ti t pipe hoc thm ch trc tip t standard input. Output ca sed c th i ti standard output hoc nh hng ti 1 file hoc ti mt pipe no .1. c trng v th mnh ca SED- chnh sa t ng mt hoc nhiu file- n gin ha cc thao tc chnh lp i lp li trn nhiu file- cho php vit cc chng trnh chuyn i hu dng2. Cch thc hot ng ca SEDSED lm vic trn tng dng trong file text do chu trnh x l ca n s nh sau:- mi dng c copy vo mt vng nh m "pattern space" ni s din ra cc thao tc x l- cc lnh chnh sa trong script c thc thi- cc lnh c x l trn tt c cc dng tr khi mt dng no khng tha mn- nu mt lnh thc hin thay i input, do cc lnh ch lm vic trn pattern space do d liu thc s s khng cn l ca input ban u- file input thc cht khng b thay i m cc thay i ch din ra trn mt bn sao ca n pattern space. Bn copy ny s gi ti standard output (mc nh)- sed cng s dng mt vng nh m ring "hold space" c kh nng lu d liu cho cc thao tc truy xut sau .3. C php dng lnhC php ca SED c th hai dng nh sau:sed [-n] [-e] 'command' file(s)sed [-n] -f script_file(s)Cc dng ny c th s dng phi hp vi nhau. Nu nh khng c file input no c ch nh th mc nh sed s c d liu t standard input.[-n] : ty chn ny ch nh sed khng hin th kt qu ra standard output nh mc nh. Trong trng hp c php th hai, ta c th t dng u tin c ni dung#ncng s cho kt qu tng t.4. C php cc lnh ca sedCc lnh SED c mt c php tng qut nh sau:[address[,address]][!]command [arguments]SED sao chp tng dng input file vo pattern space, ch th ca sed bao gm cc address ( address pattern) v cc cu lnh thao tc (command). Nu mt address khp vi mt dng no trong pattern space th lnh tng ng s c p dng.1. pattern addressing (nh v mu)Mt lnh sed c th ch nh 0, 1 hoc nhiu cc address. Address lm nhim v ch th v tr dng m cc lnh s c thc thi. Mt address c th l mt ch s dng, mt k hiu dng cui $ hay l mt biu thc chnh quy c bao gi trong cm /pattern/. Ngoi ra, k hiu \n c th khp vi bt k du xung dng no trong pattern space tr du xung dng cui pattern space.Nu pattern space cha ...Th lnh s c p dng cho ...

Khng cha patternp dng cho tng dng trong input

Cha 1 patternAp dng cho tng dng so khp c vi pattern. Mt s lnh ch chp nhn 1 pattern nha, i , r, q, =

Cha hai pattern cch nhau bng du phyBt u t dng u tin khp v tt c cc dng khp pattern u tin cho n dng khp pattern th hai

Mt pattern theo sau bi k t !Cc dng khng cha pattern

2. V d:CommandHnh ng c thc hin

s/xx/yy/gThay th ton b xx bi yy trong cc dng (g: global)

/BSD/dXa tt c cc dng c cha BSD

/^BEGIN/,/^END/pIn tt c ni dung nm gia BEGIN v END, tnh c hai mc ny

/SAVE/!dXa tt c cc dng khng cha t SAVE

/BEGIN/,/END/!s/xx/yy/gThay th tt c xx bi yy trn cc dngkhng nm trong on BEGIN ti END

Cp ngoc { } c th c dng nhng mt pattern vo trong mt pattern khc hoc dng p dng nhiu lnh ln mt mu khp vi pattern. Tuy nhin, cn ch rng, du m ngoc phi nm cui dng ca n v du ng ngoc phi nm c lp trn 1 dng v gia chng khng c khong trng. V d:

5. Nhm cc lnh c bn km minh ha s dng1. Nhm cc lnh chnh sa c bnLnhM tV d

a\Append, thm vo sau mt dng khp vi address

c\Thay th text (thng l mt khi text)

dXa cc dng

sThc hin cc php thay th (substitution)

2. Cc lnh lin quan ti thng tin ca dng vn bn hin thiLnhM tV d

=Hin th dng ang c

lHin th cc k t iu khin trong ASCII

pPrint - in dng ang c

3. Nhm cc lnh x l input/outputLnhM tV d

nB qua dng hin thi, chuyn ti dng tip theo

rc ni dung t mt file khc vo input stream

wGhi cc dng trong input vo mt file khc

qThot khi sed script, khng sinh thm output no na