1.
2. AWK-
Part: AWK-
1. AWK
1.1
1.2
1.2.2
1.2.3
1.2.4
1.3
2. /patterns/
2.1
2.2
2.3
2.4 BEGIN END
3.
3.1 //
:
1. (input)
2. , "olga"
3. , "olga", "mike" "mal"
4.
5. ,
6. , "olga", "mike" "mal" : folga, fmike, fmal
AWK 1977, : Alfred V.Aho, Brian W.Kernighan Peter J.Weinberger , . , , , . - AWK, , , - .
AWK input ( ), , , . 256 .
:
awk [-Fc] [-f file] [files]
awk [-Fc] [prog] [files]
prog - , : ' ${$$}$'
file - AWK-:
{ }
{ }
...
files - , AWK-.
-Fc - ``'' (. 1.2.1 2.4)
2. AWK-
1. AWK :
;
(, );
.
2. :
;
;
;
BEGIN END.
3. :
, ``;'' ``\n'' ( )
:
();
;
;
.
AWK-
1. AWK
1.1
input , ( - ).
AWK :
$1 - ;
$2 - ;
... ...
$0 - .
100 .
1.2
1.2.2
. , :
|
|
x = 1, x ;
x = " ", x - ;
x + "abc" - , . ("abc"), 0.
256 .
1.2.3
$1, $2,... , :
$1 = "3" + $2 - , 3.
$(i+1) - , i.
1.2.4
. , , :
x[NR] = $0 - x, NR, .
x["apple"] - , .. .
1.3
:
;
;
;
;
< > .
< >: "+", "-", "*", "/", "%"
2. /patterns/
2.1
AWK , ``/ /''. , AWK-:
"()" - ;
" |" - "";
" + " - , , 1;
"? " - 0 1 ;
[A-Z] - ASCII ;
: "[] * +? |".
:
/Olga/ - , Olga.
/[Oo]lga|[Mm]ike|[Mm]al/ - , Olga olga Mike mike Mal mal.
/number[0-9]/ - , number0 number1 ... number9.
/\/.+\// - , , 1, / /.
2.2
:
< > < > < >
< > < . > < >
:
~ - ;
!~ - .
. : <, < =, ==,!=, > =, >.
:
$1 ~ /[Oo]lga/ - , Olga olga.
$1 > = "s" - , s : t, u, v...
2.3
: || - ``'', & & - ``'',! - ``''.
, .
: ``1, 2'' , , : , , ``1" , ``2", .
|
|
:
/02\.95/ & & ($1!~ /\.su/ $2!~ /\.su/) - , 02.95 .su .
NR == 100, NR == 200 - 100 200.
2.4 BEGIN END
BEGIN input , . END input , .
:
BEGIN {FS = ":"} - ":" . "-F:" AWK .
END { print NR } - input, .. .
3.
3.1 //
:
PRINT [< > ] [ > < 1> ]
, output () - OFS ( ). , .
< 1> . . ``> '' ``> > '', . 10 output .
:
PRINTF [, ] [ > 1]
: . , printf ``''. :
, output.
esc, , , "\n" - .
, ``%''. . ( , , - )
3.2
:
< > = < >
0 `` '' (). ``'': "+=","-=","*=","/=","%=".
< > ++, ++< > - 1.
< > --, --< > - 1.
3.3
length(arg) - arg. arg , .
exp(),log(),sqrt() - , .
int() - .
substr(s,m,n) - s, m, n .
index(s,t) - t s. ( 0, t s .)
sprintf(fmt,exp1,exp2,...) - () , PRINTF.
split(s,array,sep) - s array . sep, .
3.4
:
if (< >) < >
\hskip 1cm [else < > ]
:
while (< >) < >
for (< >; < >; < >)
\hskip 1cm < >
:
for(i=1; i< =NF; i++) - for ``''
for (i in array) - . .
break - .
continue - .
next - .
exit - ( input).
# -
:
1. (input)
|
|
{ PRINT NR }
2. , "olga"
/olga/
3. , "olga", "mike" "mal"
/olga\bverb mike\everb mal/
4.
{PRINT $3}
5. ,
{PRINT $3 $2}
6. , "olga", "mike" "mal" : folga, fmike, fmal
/olga/ {print > "folga"}
/mike/ {print > "fmike"}
/mal/ {print > "fmal"}
7. , root
ps aux | mawk $1 == root{print}
8.
ps aux | mawk index ($8,l)>0 {print}
2.
1. () . . 2:
/bin, /etc, /lib, /proc, /usr, /var, /dev, /sbin, /sys, /root, /tmp, /home
2. , .
3. C c , :
grep , 7, 1, 3 5.
4. C , :
starfish
starless
samscripter
stellar
microsrar
ascender
sacrifice
scalar
grep , s r
5. awk
6. awk , 5 .
7. awk ,
. 1-3 --------
. 4-5 --------
. 6-7 -------- gnome
. 8-9 --------
. 10-12-----
6.
3.
. :
1. , 1 - 7 - ( ).
4.
1. hexdump strings.
2. .
3. .
4. . .
5. .
6. .
7. awk (gawk, mawk).