Processamento de arquivo texto ============================== Os comandos são aplicados em arquivos no formato texto. As dicas foram obtidas da internet e de anotações pessoais. O símbolo `>` direciona a saída do comando para um arquivo texto. Os símbolos `^` e `$` significam início e fim de uma linha, respectivamente. ### Dicas utilizando o sed + Deleta as linhas em branco de um arquivo: `sed '/^$/d' seu.arquivo.texto > out.txt` + Deleta a partir da linha 3 de duas em duas linhas: `sed '3~2d' seu.arquivo.texto > out.txt` + Imprime as linhas pares: `sed '1~2d' seu.arquivo.texto > out.txt` + Imprime as linhas ímpares: `sed '2~2d' seu.arquivo.texto > out.txt` + Imprime uma linha específica. Exemplo: Imprime somente a linha 27: `sed '27!d' seu.arquivo.texto > out.txt` + Imprime um intervalo de linhas. Exemplo: Imprime da linha 10 até 15: `sed '10,15!d' seu.arquivo.texto > out.txt` + Realiza substituição de texto no arquivo (opção "g" substitui em todo o arquivo): `sed 's/zonal wind/vento zonal/g' seu.arquivo.texto > out.txt` + Realiza substituição no próprio arquivo (opção "-i"): `sed -i 's/\./,/g' seu.arquivo.texto` + Substitui TAB por nada no início da linha: `sed 's/^[ \t]*//' seu.arquivo.texto > out.txt` + Substitui a palavra "texto" por nada: `sed 's/texto//g' seu.arquivo.texto > out.txt` + Substitui ponto (.) por vírgula (,): `sed 's/\./,/g' seu.arquivo.texto > out.txt` + Transforma coluna em linha: `sed 's/ /\n/g' seu.arquivo.texto > out.txt` ### Dicas utilizando o AWK + Imprime as linhas pares de um arquivo: `cat -n seu.arquivo.texto | awk '$1 % $2 != {print}' > out.txt` + Imprime as linhas ímpares de um arquivo: `cat -n seu.arquivo.texto | awk '$1 % $2 == {print}' > out.txt` + Transforma coluna em linha: `cat seu.arquivo.texto | awk '{gsub(/ /,"\n");print}' > out.txt` + Deleta a coluna 1 ($1) de um arquivo texto: `cat seu.arquivo.texto | awk '{$1=""; print}' > out.txt` ### Dicas usando o xargs + Transforma linha em coluna: `cat seu.arquivo.texto | xargs` ### Dicas usando o find + Excluir arquivos vazios no diretório corrente (.): `find . -type f -empty | xargs rm` + Excluir diretório vazios no diretório corrente (.): `find . -type d -empty | xargs rm -rf`