2007-01 Gawk

Moje notatki przy pracy z AWK (GAWK)

Sumaryczna wielkość plikow w katalogu (niestety liczby razem z pustym" " oraz "." i ".." … trzeba to wyeleminować jakoś).

ls -la | gawk ' /^[^ \.]/ { ilosc+=1; sum += $5; print ilosc " - " $8 } END { print "ilosc = " ilosc; print "suma bajtow = " sum; }'

Wypisywanie listy obrazków na stornie … (wersja pre-alfa)

read url
wget -O - $url | gawk ' /\<img(.*)src="(.*)"(.*)\>/ { $0=gensub("(.*)<img(.*)src=\"([^\"]\+)\"(.*)>","\\3","G");  print $0 }'

Sklejenie enterów w całym pliku na spacje

gawk ' BEGIN { FS=""; RS="XZQRP!@#" } { print gensub("\n"," ","G"); } '

Zmiena nazw linkow na stornie wiki na tytuły stron, wersja prealfa:

gawk '{print gensub("\\[\\*?http://[^\\]]+\\]", "{&}", "G"); }'

Jak chcemy w pliku wstawić w miejsce lnii zaczynających się od "<#>insertfile file name" by zostały wstawione wyspecyfikowane pliki, użyj:

awk '/^<#>insertfile/ {system("cat \""substr($0,15)"\""); next}; {print $0}'  INPUT_FILE

Jak chcemy by zamiast lini w pliku "<#>cmd komendy…" pojawil sie wynik ich wykonania:

awk '/^<#>cmd/ {system(substr($0,8)); next}; {print $0}'   INPUT_FILE

Połączenie "<#>insertfile" oraz "<#>cmd"

awk '
/^<#>cmd/ {system(substr($0,8)); next};
/^<#>insertfile/ {system("cat \""substr($0,15)"\""); next};
{print $0}'  INPUT_FILE

Trimming whitespaces at begining

function trim_whitespaces_at_begining(str){
    return substr(str,match(str, "[^ ]"))
}

Więcej…

Więcej w Skryptach Bash

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License