Manipulando Arquivos de Texto - Linux
O comando tr
tr
test.txt
tom bob sam alice kate
Todos os caracteres no arquivo estão em minúsculas. Vamos convertê-los para maiúsculas:
programicio@Programicio:~$ cat test.txt | tr a-z A-Z TOM BOB SAM ALICE KATE
Como podemos ver, o comando tr
test.txt
cat
a-z
A-Z
O resultado convertido pode ser salvo em outro arquivo:
cat test.txt | tr a-z A-Z > test2.txt
Ordenando Linhas
Para ordenar as linhas de um arquivo, utilizamos o comando sort
programicio@Programicio:~$ cat test.txt | sort alice bob kate sam tom
De forma semelhante, podemos ordenar a saída de outros comandos, como a lista de arquivos e diretórios:
programicio@Programicio:~$ ls | sort Desktop Documents Downloads extensions Music Pictures Public shell snap Templates Videos
Por padrão, o comando ordena as linhas em ordem lexicográfica. No entanto, ao lidar com números, essa ordenação pode não ser correta. Por exemplo, no arquivo test.txt
12 11 4 56 17
A ordenação padrão resulta em:
programicio@Programicio:~$ cat test.txt | sort 11 12 17 4 56
Para ordenar corretamente os números, usamos a opção -n
programicio@Programicio:~$ cat test.txt | sort -n 4 11 12 17 56
Extraindo Informações com Comando cut
O comando cut
: define o delimitador de dados na linha-d
: define a lista de números dos campos a serem exibidos. A lista de campos pode ser especificada em um dos seguintes formatos:-f
: exibe o campo de número N (a numeração começa em 1)N
: define um intervalo de campos que começa no número N e termina no último campoN-
: define um intervalo de campos de N a MN-M
: define um intervalo de campos que começa no primeiro campo e termina no campo de número M-M
Suponha que temos o seguinte arquivo test.txt
Tom:39:Microsoft Bob:43:Google Sam:28:Jetbrains Alice:34:Oracle Kate:25:Google
Cada linha contém dados do usuário: nome, idade e empresa, separados por dois-pontos. Para obter os nomes dos usuários:
programicio@Programicio:~$ cut -d : -f 1 test.txt Tom Bob Sam Alice Kate
Aqui, a opção -d
-f
Para exibir o primeiro e o terceiro campos:
programicio@Programicio:~$ cut -d : -f 1,3 test.txt Tom:Microsoft Bob:Google Sam:Jetbrains Alice:Oracle Kate:Google
Ou do primeiro ao segundo campo:
programicio@Programicio:~$ cut -d : -f 1-2 test.txt Tom:39 Bob:43 Sam:28 Alice:34 Kate:25
Também podemos aplicar cadeias de transformações. Por exemplo, para exibir os três primeiros nomes, ordenados em ordem crescente:
programicio@Programicio:~$ cat test.txt | cut -d : -f 1 | sort | head -3 Alice Bob Kate