Neste capitulo, teremos que aprender a manipular os conteúdos de arquivos de texto. Vamos realizar filtros, modificando saídas com os programas encontrados no pacote GNU textutils.
Peso 3
CAT e TAC
O comando cat tem a função de mostrar o conteúdo dos arquivos, na ordem em que está, ou seja, de cima para baixo. Já o comando tac, realiza a mesma função do cat, porém mostra o conteúdo de trás para frente.
Exemplo:
cat /etc/passwd - exibe o conteúdo do arquivo passwd. Se for colocada a opção -n, numera as linhas.
tac /etc/passwd - exibe o conteúdo do arquivo passwd, só que de cima para baixo.
HEAD
Exibe o começo dos arquivos. Por padrão, as 10 primeiras linhas são mostradas. Uma opção muito interessante é a opção -n, que indica a quantidade de linhas a serem mostradas.
head -n 19 /etc/passwd - para mostrar as 19 primeiras linhas do arquivo passwd.
Podemos ainda jogar o resultado para numerarmos a saída com o cat:
head -n 19 /etc/passwd | cat -n
TAIL
Faz o inverso do head. Mostra as últimas linhas de um arquivo. Por padrão, as últimas 10 linhas são mostradas. A opção -n mostra a quantidade de linhas a serem mostradas.
tail -n 13 /etc/passwd - mostra as 13 últimas linhas do arquivo passwd.
Com a opção -f, podemos ver o arquivo sendo mostrado continuadamente, a medida que novos dados são inseridos.
CUT
Corta campos ou colunas de cada linha de um determinado arquivo.
Sintaxe: cut [opções] arquivo
Opções:
-d - delimitador
-f[n] - campo
-c[n] - coluna
Exemplos:
cut -d ':' -f1-3 /etc/passwd - mostra os campos 1 até o 3 do arquivo passwd
cut -c2 arquivo - imprime a segunda coluna do arquivo
cut -c1-8 /etc/passwd - mostra a coluna que vai do 1 até o 8
Para exibir um delimitador no lugar de outro delimitador, usamos a opção --output-delimiter, dessa forma:
cut -d ':' -f1,3 /etc/passwd --output-delimiter '='
onde tiver ':' será substituído por '='
WC
Conta linhas, palavras ou caracteres, com as opções -l, -w, -c, respectivamente. Se usarmos esse comando sem argumentos, mostra os 3 valores na sequência.
Sintaxe: wc [opções] arquivo
Exemplo: wc /etc/group
57 57 930 /etc/group
NL
Numera linhas.
Sintaxe: nl [opções] arquivo
Opções:
-b - formata o corpo do texto
-a - numera as linhas em branco
-t - numera somente as linhas com conteúdo
-i - realiza um incremento num
-v - informa a partir de qual número a contagem das linhas começará
Exemplo: nl -i 20 -v 100 -ba /etc/host.conf
100 #
120 # /etc/host.conf
140 #
160 order hosts,bind
180 multi on
200 # End of file
Foi realizado um incremento de 20 em 20 (-i 20), onde a numeração começará a partir do número 100 (-v 100), numerando todas as linhas, inclusive as linhas em branco (-ba).
EXPAND
Substitui espaços de tabulação por espaços simples, mantendo a mesma distância. Definimos a quantidade a ser espaçada com a opção -t.
expand -t 1 teste.txt
PS: Um espaço de tabulação corresponde a 8 espaços simples.
UNEXPAND
Substitui dois ou mais espaços simples para espaços de tabulações. Igual no expand, usamos a opção -t.
unexpand -t 1 teste.txt
HEXDUMP
Exibe conteúdo dos arquivos em hexadecimal, decimal, octal ou ASCII.
Exemplo:
hexdump -C arquivo_teste2.txt
00000000 31 20 20 62 61 6e 61 6e 61 0a 32 20 20 63 61 6a |1 banana.2 caj|
00000010 75 0a 33 20 20 6d 61 c3 a7 61 0a 34 20 20 6c 61 |u.3 ma..a.4 la|
00000020 72 61 6e 6a 61 0a 35 20 20 6d 65 6c c3 a3 6f 0a |ranja.5 mel..o.|
00000030 36 20 20 61 62 61 63 61 78 69 0a 37 20 20 70 65 |6 abacaxi.7 pe|
00000040 72 61 0a 38 20 20 6d 6f 72 61 6e 67 6f 0a 0a |ra.8 morango..|
0000004f
OD
Converte entre diferentes formatos de dados, como hexadecimal e binário.
SPLIT
Divide um arquivo em outros menores, com critérios de tamanho ou número de linhas.
Opções:
-l - divide por número de linhas
-b - divide por número de tamanho
Exemplo: split -b 100M filme.mkv parte_ - vai dividir o arquivo filme.mkv em partes de 100M, até completa o tamanho do arquivo original.
Para restaurar um arquivo dividido para o original novamente, usamos o comando:
cat parte_* > arquivo_original (parte é o nome do arquivo que você dividiu)
UNIQ
Verifica as linhas sequenciais duplicadas de um arquivo e/ou as remove.
Opções:
-c - exibe o número da ocorrência de cada linha
-d - exibe apenas as linhas com mais de uma ocorrência, onde cada linha é mostrada apenas uma vez
- i - ignora maiúsculas e minúsculas
-u - exibe apenas as linhas que não se repetem
Exemplo:
Em um aquivo file.txt cujo conteúdo contenha:
1111111
1111111
2222222
3333333
3333333
4444444
uniq file.txt
1111111
2222222
3333333
4444444
SORT
Ordena o conteúdo de um arquivo, por mês, numeração, por ordem alfabética, por coluna etc.
Sintaxe: sort [opções] arquivo
Opções:
-b - ignora espaços em branco
-g - compara de acordo com numéricos genéricos
-i -considera apenas caracteres imprimíveis
-M - ordena por mês (JAN, FEV, MAR...)
-n - comparar de acordo com valores de strings numéricas
-r - ordem inversa
-t - especifica um delimitador para ordenar por uma coluna que não seja a primeira
-k - especifica número da coluna
Exemplo:
sort -n -t: -k3 /etc/group - ordena pelo número (-n) a coluna do GID (-k3, referente a coluna 3), após o delimitador ":"
FMT
Formata textos usando uma largura especifica, removendo ou inserindo espaços.
Sintaxe: fmt [opções] arquivo
Opções:
-t - recuo da primeira linha será diferente para o da segunda
-u - um espaço para palavras, dois para sentenças
-w - especifica um tamanho máximo para as colunas de um arquivo, onde o padrão é 75.
JOIN (unir)
Concatena registros de dois arquivos de texto baseado em índices comuns entre os registros.
Sintaxe: join arquivo1 arquivo2
LESS
Realiza paginação de arquivos.
less arquivo.txt
Com a opção -N, numera as linhas.
PASTE
Concatena arquivos lado a lado. Muito parecido com o join.
paste file1.txt file2.txt
PR
Divide o arquivo para impressão. Por padrão, são 66 linhas por 72 caracteres de largura.
Opções:
-l - altera as linhas
-w - altera a quantidade de caracteres
TR
Converte caracteres.
Exemplo:
echo 'testando a conversão do tr' | tr ' ' '-'
testando-a-conversão-do-tr
SED
Veremos o básico do comando sed pois estudaremos mais no tópico 103.7.
O comando sed é utilizado para procurar e substituir padrões em textos.
Sintaxe: sed [opções] 'expressão regular' arquivo
Comentários
Postar um comentário