mvrpl
11/28/2016 - 11:18 AM

Comandos Úteis AWK, SED, GREP, UNIX

Comandos Úteis AWK, SED, GREP, UNIX

- Soma tamanhos de arquivos na pasta corrente:
ls -l | grep '^-' | awk 'function humano(x) {if (x<1000) {return x} else {x/=1024} s="kMGTEPYZ";while (x>=1000 && length(s)>1) {x/=1024; s=substr(s,2)} return int(x+0.5) substr(s,1,1)} { x += $5 } END { print "total:", humano(x) }'

- Substitui acentos por caracteres normais:
sed -i 'y/áÁãÃâÂàÀéÉêÊíÍóÓõÕôÔúÚüÜçÇ/aAaAaAaAeEeEiIoOoOoOuUuUcC/' arquivo.txt

- Contar métodos de todos .py da pasta corrente recursivamente:
find -E . -regex ".*\.(py)" -type f -exec grep -Hn 'def\s\w\(.*\):' \{\} \; | wc -l

- Mostra diferenças entre resultados:
BASH> diff <(find -E . -regex ".*\.(py)" -type f -exec grep -Hn 'class\s.*:' \{\} \;) <(find -E . -regex ".*\.(py)" -type f -exec grep -Hn 'class\s\w\(.*\):' \{\} \;)
FISH> diff (find -E . -regex ".*\.(py)" -type f -exec grep -Hn 'class\s.*:' \{\} \; | psub) (find -E . -regex ".*\.(py)" -type f -exec grep -Hn 'class\s\w\(.*\):' \{\} \; | psub)

- Imprime em negrito ou normal, par/ímpar:
cat arquivo.txt | awk '{if (FNR % 2 == 0) {print "\x1B[32m", $0,"\x1B[0m"} else {print "\x1B[01;32m", $0,"\x1B[0m"}}'

- Verifica se string contem em arquivo:
echo "Marcos" | awk '{ while(( getline line < "nomes.txt") > 0 ) { if (match($0, line)) {print $0, " - contem em nomes.txt"} } }'

- Lista somente arquivos MB ou GB:
ll | awk '{if ($5 ~ /[0-9](M|G)/) {print $0}}'