Home  Home info
Groups > grep sed awk
Posts in descending order:
note sed 2007-02-23 12:42:46  
  Wywoywanie:
sed [-e] 'instruction' file

Uycie:
sed 's/kot/pies/g' file //zamienia wystpienia kot na pies w pliku file
sed 's/kot/pies/; s/dom/chata/' file //odseparowanie komend przez ;
sed -r '1 s/.*/\(&\)/g' // pierwszy wiersz zamknac w nawiasy (& oznacza znalezione wyrazenie, 1 - adres, czyli
pierwsza linia)

 
note Prefix dla wszystkich linii w pliku 2005-02-22 22:42:29  
  Dodaje do kadego wiersza w pliku plik na pocztku sowo word:
sed 's/.*/word&/' file
 
note awk 2004-09-14 09:25:49  
  Wywoywanie awk:
awk 'instructions' files
awk -f script files

awk dzieli linie na pola, wykorzystujc jako separatory spacje lub znaki tabulacji (mona to zmieni przecznikiem -F)
awk -F , '....' files //zmiana separatora na przecinek

Dostp do pl:
$0 - caa linia wejciowa;
$1, $2, $3... - kolejne pola linii;

Uycie:
awk '{ print $1 }' file //wywietla pierwsze sowo (pole) kadej linii z pliku file
awk '/regular_expr/' file //wywietla wszystkie linie pasujce do wzorca regular_expr
awk '/MA/ { print $1 }' file //poczenie obu powyszych
awk -F, '{ print $1; print $2; print $3 }' file //odseparowanie komend przez ;

Skrypty:
print "" //wypisuje czyst lini (blank line)
BEGIN { FS = "," } //zdefiniowanie tzw. separatora pl (Field Separator) np. { print $1 ", " $6 } - normalnie kolejne pola s wywietlane z odstpem spacji, po zdefiniowaniu FS oddziela je moe dowolny cig znakw
/^$/ { ++x }
END { print x }
//zlicza "blank lines"; procedura END wywoywana jest po odczytaniu ostatniej linii wejciwej

Testy na polach:
$5 ~ /MA/ { print $1 ", " $6 } //znak tyldy pozwala sprawdza wyraenia regularne w stosunku do pl (w przykadzie sprawdzane jest pole nr 5)
$5 !~ /MA/ { print $1 ", " $6 } //wywietla te pola nr 1 i 6, w ktrych pole nr 5 nie pasuje do wyr. regularnego

Zmienne wbudowane:
FILENAME Current filename
FS Field separator (a blank)
NF Number of fields in current record
NR Number of the current record (po odczytaniu wszystkich rekordw zawiera ich liczb)
OFMT Output format for numbers (%.6g)
OFS Output field separator (a blank)
ORS Output record separator (a newline)
RS Record separator (a newline)

Wbudowane funkcje operujce na acuchach znakowych:
index(s,t) Returns position of substring t in string s or zero if not present
length(s) Returns length of string s or length of $0 if no string is supplied
split(s,a,sep) Parses string s into elements of array a using field separator sep; returns number of elements. If sep is not supplied, FS is used. Array splitting works the same way as field splitting
sprintf("fmt",expr) Uses printf format specification for expr.
substr(s,p,n) Returns substring of string s at beginning position p up to maximum length of n. If n isn't supplied, the rest of the string from p is used

Przekazywania parametrw do skryptu:
awk 'script' var=value inputfile
 
note Wyra?enia regularne (regular expressions) 2004-09-14 08:34:14  
  wyr* wielokrotne (bd zerowe) wystpienie poprzedzajcego * wyraenia wyr
. dowolny pojedynczy znak z wyjtkiem znaku nowej linii (w awk . moe znaczy rwnie znak koca linii)
.* dowolna (rwnie zerowa) liczba znakw
[...] pasuje do wystpie jednego ze znakw zawartego w nawiasach; poprzedzenie znakiem
[^...] odwrotny przypadek, czyli pasuj wszystkie znaki z wyjtkiem tych w nawiasach i zanku nowej linii
^love wszystkie linie ropoczynajce si love
love$ wszystkie linie konczcych si love
l..e linie zawierajce l,potem dwa dowolne znaki i e
\<love linie zawierajce sowo rozpoczynajce si od love
love\> linie zawierajce sowo koczce si wyraeniem love

Rozszerzone funkcje (egrep, awk):
+ Pasuje do jednego lub wikszej liczby wystpie poprzedzajcego wyraenia regularnego
? Pasuje do 0 lub jednego wystpienia poprzedzajcego wyraenia regularnego
| Oznacza, e moe pasowa poprzedzajce lub nastpujce wyraenie regularne (alternatywa)
() grupuje wyraenia regularne
{n,m} Matches a range of occurrences of the single character (including a character specified by a regular expression) that immediately precedes it. {n} will match exactly n occurrences, {n,} will match at least n occurrences, and {n,m} will match any number of occurrences between n and m. (POSIX egrep and POSIX awk, not in traditional egrep or awk.)