Linux - Manipulando Arquivos de Texto
O comando tr
é utilizada para converter ou remover caracteres de um arquivo. Um uso comum de tr
é converter letras minúsculas em maiúsculas. Por exemplo, considere um arquivo de texto chamado test.txt
no diretório home do usuário com as seguintes linhas:
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
é aplicado às linhas do arquivo test.txt
, que são lidas pelo comando cat
. Neste caso, o comando tr converte todos os caracteres do intervalo a-z
para os caracteres correspondentes do intervalo 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
com as seguintes linhas:
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
permite extrair partes específicas de um arquivo estruturado. Isso é similar a trabalhar com tabelas, onde queremos obter dados de determinadas colunas. Este comando aceita várias opções, entre as quais destacamos:
-d
: define o delimitador de dados na linha-f
: define a lista de números dos campos a serem exibidos. A lista de campos pode ser especificada em um dos seguintes formatos:N
: 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-M
: define um intervalo de campos de N a M-M
: define um intervalo de campos que começa no primeiro campo e termina no campo de número M
Suponha que temos o seguinte arquivo test.txt
no diretório home:
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
indica que o delimitador é o dois-pontos, e a opção -f
especifica que queremos o primeiro campo.
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