www.nevod.ru/linux/doc/sed/
I. ????????? ???????? sed
??????? ????? ??????:
sed [ -n ] [ -e script ] [ -f sfile ] [ files ]
??????? ???????? ????? (?? ????????? ?? ???????????? ?????)
?? ??????????? ?????, ??????????? ?? ? ???????????? ?? ??????(!)
?????????, ???????????? ? "script" (? ????????? ????? ??? ??????
????????? [? ?? shell!]). ?? ????? "-f" ????? ????? ???? ??????
?? ????? "sfile"; ???? ???? ?????? ????? "-e script", ?? ????
"-e" ????? ????????. ???? "-n" ????????? ????? (???????????? ??
?????????). "script" ??????? ?? ?????? ??????????????, ?? ????? ?
??????, ??????? ??????:
[ addr [ , addr ] ] cmd [ args ]
"sed" ?????????? ??????????? ??????? ?????? ? ????????.
?????? "[ addr [ , addr ] ]" - ??? ???? ?????? ?????, ????
????????? ?????? (?????? "$"), ???? ?????????? ????????? ? ?????
????????? "ed":
- "" ???????????? ? ????????????? ???????? ???
????????????? ??????????? ??????.
- "." ????????? ? ????? ????????.
- ???? ?????? ?? ??????? - ??????????????? ??? ???????
??????.
- ???? ???? ?????, ?? ?????????? ??????????? ??????.
- ???? ?????? ??? ??????, ?????????? ?????? ? ????????
?????????.
- "!cmd" ??????????? ??????? "cmd", ??? ?????, ??????? ??
???? ??????? ?? ???????.
??? ????????? (????????) ??????? (??????) ???????????? ?????
?????????? ??????? ??????? ? ???????.
(1)a
text ????????? text ????? ????????? ??????
???????:
who
?????????:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24
??????:
who | sed '2a
????? ??????
'
?????????:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
????? ??????
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24
(2)b label
???????????? ??????? ? ??????? ("cmd") "label:cmd" ????
????? ("label") ???????????, ?? ??????? ?? ????? ?????????? ?????.
??????:
who | sed '2a
????? ??????
b lb
2d
: lb 3d
'
?????????:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
????? ??????
sae tty5 Mar 13 17:24
(2)c
text ??????? ????????? ?????? ? ???????? ?? ?? "text'.
??????:
who | sed '/sae/ c
c????? ??????
'
?????????:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
?????? ??????
?????? ??????
(2)d ??????? ????????? ??????
??????:
who | sed '2,4d'
?????????:
root tty1 Mar 13 17:23
(1)i
text ????????? "text" ?? ????? ????????? ??????.
(???????? ? "a")
??????:
who | sed '2i
????? ??????
'
?????????:
root tty1 Mar 13 17:23
????? ??????
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24
(2)p ??????? ????????? ?????? (???????????? ? ?????? "-n").
(1)q ??????? ?? "sed".
(2)r rfile
?????? ???? "rfile" ? ?????? ?? ?????.
(2)s/reg_expr/rpl/flags
???????? ?????????? ????????? "reg_expr" ?? "rpl" ? ??????
?????? "flags":
g - ????????? (?? ???? ??????)
p - ???????? ??????
w wfile - ????????? ?????????? ? "wfile".
??????:
who | sed 's/t/T/'
echo
who | sed 's/t/T/g'
?????????:
rooT tty1 Mar 13 17:23
mas Tty2 Mar 13 18:50
sae Tty6 Mar 13 17:24
sae Tty5 Mar 13 17:24
rooT TTy1 Mar 13 17:23
mas TTy2 Mar 13 18:50
sae TTy6 Mar 13 17:24
sae TTy5 Mar 13 17:24
(2)y/str1/str2/
???????? ??? ????????? ???????? "str1" ??????????????? ?????????
"str2". ????? ????? ?????? ???? ???????????.
??????:
who | sed 'y/sae/SAE/'
?????????:
root tty1 MAr 13 17:23
mAS tty2 MAr 13 18:50
SAE tty6 MAr 13 17:24
SAE tty5 MAr 13 17:24
(2)! cmd ???????(?) "cmd" ??????????? ? ??????????? ???????.
??????:
who | sed '2,4!d'
?????????:
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24
(1)= ?????? ?????? ?????.
??????:
who | sed =
?????????:
1
root tty1 Mar 13 17:23
2
mas tty2 Mar 13 18:50
3
sae tty6 Mar 13 17:24
4
sae tty5 Mar 13 17:24
(2){ } ?????? ?????????? ???????.
-------------"--------------
II. ???? ????????? ???????? awk
(Aho, Weinberg, Kernigan)
awk - ??????? ???????????? ?????? ? ?????????????? ??????.
??? - ??????. ?? ????? ????????????? ??? ???????? "awk" ?
???????? "shell".
1. ????????? awk-?????????
????????? ??????? ?? ?????????? (??????), ??????? ???:
?????? {????????}
?????? {????????}
. . .
??????? ??????:
{????????} - ????? ???????? ??????????? ??? ???? ?????.
?????? - ????? ????????? ?????? ? ?????? ????????.
???????? ????? ???????? ?? ?????????????????? ??????????,
??????????? ";" ??? ????????? ?????? ??? ??????????? ???????.
???????? ??????????? (??? ? shell "#.........").
??????:
??? ?????????? ???????? ??????? ??????? ???? "f-awk"
( ??????? ???????? ???-??????-??-?????? ??????? ):
?????? ?.?. 1980 50
?????? ?.?. 1979 40
??????? ?.?. 1979 40
???????? ?.?. 1970 60
awk '{print}' f-awk # ?????? ???? ?????;
echo
awk '/??/ {print}' f-awk # ?????? ??????, ??? ???? "??".
echo
awk '/??/ {}' f-awk # ?????? ??????, ??? ???? "??"
echo
awk '/??/ {print("??????!")}' f-awk
?????????:
?????? ?.?. 1980 50
?????? ?.?. 1979 40
??????? ?.?. 1979 40
???????? ?.?. 1970 60
??????? ?.?. 1979 40
???????? ?.?. 1970 60
??????? ?.?. 1979 40
???????? ?.?. 1970 60
??????!
??????!
?????????? ??? ????????? ???????????? ???? ("BEGIN"-
????????? ????????? ? "END" - "?????????????"):
BEGIN {????????}
?????? {????????}
?????? {????????}
. . .
END {????????}
2. ????? awk
???????? ??? ???????? ????????:
1) awk [-Fc] 'prog.awk' [files]
??? ?????????? ??????, ????? ????????? (??????????? ?
??????? " ' ") ????????? ? ???? ???????,
"-Fc" - ????, ???????? ??????????? ??????????? ????? ?? "c"
"file" - ??? ????? ???????? ??????, ??? ??? ?????????? - ??
???????????? ?????. (???? ?????? ?????????? ? ????????? ????????).
cat f-awk | awk '/??/ {print}'
?
awk '/??/ {print}' < f-awk
???? ?????????, ???????????
awk '/??/ {print}' f-awk
??? ???????????? ???????? ????? "-Fc" ?????????? ??????:
awk '/??/ {print($2)}' f-awk
awk -F0 '/??/ {print($2)}' f-awk
?? ????? ????? ????????:
?.?.
?.?.
6
?????? ??????? "awk" ??????? ?????? ???? (?????????
??????????? ?????????? "$2") ?????, ?????????? "??". (??????,
??????????? ?????????? "$0" ???????????? ???? ??????).
?? ?????? ??????, ????????? ????? "-F" ???????????
??????????? ???????? ?? ?????? "0", ?.?. ?????? ????????? ??????
??????????????, ??? ???????? ?? ????????? ????:
??????? ?.?. 1979 40
---------------------^--------------------
1-? ???? 2-? ???? (?????)
???????? ?.?. 1970 60
-----------------^---^--------------------
1-? ???? 2-? 3-? ???? (?????)
2) awk [-Fc] -f prog.awk [files]
???? "-f" ??????? ? ???, ??? awk-????????? ???? ????? ??
?????, ??? ???????? ??????? ?????? (??? ????? ???? ???????????? ?
?????????? ".awk" ????????? ????? ?????? ?? ????????????
???????????).
3. awk-?????????? ? ?????????
? ????? awk ?????????? ??? ?????? ??????????:
???????????????? ? ??????????????? ? ?????????. ???????? ????????
???????????????? ?????????? ??????????????? ??????????????? awk ?
???????? ??????? ? ?????????? awk-?????????.
? ???????????????? ?????????: ?????????:
NR ????? ??????? ??????;
NF ????? ????? ? ??????? ??????;
RS ??????????? ????? ?? ?????; "
 |