Header Ads

Como usar os comandos cat e tac do Linux

Os comandos cat e tac exibem o conteúdo dos arquivos de texto, mas há mais deles do que parece. Aprofunde um pouco mais e aprenda alguns truques produtivos de linha de comando do Linux.

Esses são dois comandos simples, geralmente descartados como sendo simples demais para ser de qualquer tipo. uso real. Mas uma vez que você conheça as diferentes maneiras de usá-las, verá que elas são perfeitamente capazes de fazer sua parte justa do trabalho pesado quando se trata de trabalhar com arquivos.

O comando cat

cat é usado para examinar o conteúdo dos arquivos de texto e juntar partes dos arquivos para formar um arquivo maior.

De uma só vez - na época do modem dial-up - os arquivos binários eram freqüentemente divididos em vários arquivos menores para facilitar o download. Em vez de baixar um arquivo grande, você recolheu cada arquivo menor. Se um único arquivo falhou ao fazer o download corretamente, você apenas recuperaria esse arquivo novamente.

Obviamente, você precisava de uma maneira de reconstituir a coleção de arquivos menores novamente no único arquivo binário funcional. Esse processo foi chamado de concatenação. E foi aí que entrou o gato e de onde vem o nome dele.

As conexões de banda larga e fibra fizeram com que essa necessidade particular diminuísse - muito parecido com os sons de discagem brusca - então, o que resta para o gato fazer hoje? Na verdade, muito.

Exibindo um arquivo de texto

Para que o cat liste o conteúdo de um arquivo de texto em uma janela de terminal, use o seguinte comando.

Certifique-se de que o arquivo seja um arquivo de texto. Se você tentar listar o conteúdo de um arquivo binário na janela do terminal, os resultados serão imprevisíveis. Você pode acabar com uma sessão de terminal bloqueada ou pior.

[PRÉ] cat poem1.txt

O conteúdo do arquivo poem1.txt é mostrado na janela do terminal.

Isso é apenas metade do famoso poema. Onde está o resto disso? Há outro arquivo aqui chamado poem2.txt. Nós podemos fazer cat listar o conteúdo de vários arquivos com um comando. Tudo o que precisamos fazer é listar os arquivos em ordem na linha de comando.

[PRÉ] cat poem1.txt poem2.txt

Isso parece Melhor; temos todo o poema agora.

Usando o gato com menos

O poema está todo lá, mas passou rápido pela janela para ler o primeiros versos. Podemos canalizar a saída do gato em menos e percorrer o texto em nosso próprio ritmo.

 cat poem1.txt poem2.txt | less 

Agora podemos retroceder e avançar no texto em um fluxo, mesmo que ele seja mantido em dois arquivos de texto separados.

Numerando as linhas em um arquivo

Podemos ter o número do gato as linhas no arquivo como ele é exibido. Para fazer isso, usamos a opção -n (número).

 cat -n poem1.txt 

IMAGEM_7

As linhas são numeradas como eles são exibidos na janela do terminal.

Não numerar linhas em branco

Conseguimos que as linhas fossem numeradas por gato, mas as linhas em branco entre os versos estão sendo contados também. Para que as linhas de texto sejam numeradas, mas para ignorar as linhas em branco, use a opção -b (number-nonblank).

 cat -b poem1.txt 

Agora as linhas de texto são numeradas, e as linhas de espaços em branco são puladas.

Não mostrar várias linhas em branco

são seções de linhas em branco consecutivas em um arquivo, podemos pedir ao gato para ignorar todas, exceto uma linha em branco. Veja este arquivo.

O próximo comando fará com que o gato exiba apenas uma linha em branco de cada grupo de linhas em branco. A opção que precisamos para conseguir isso é a opção -s (squeeze-blank).

[PRÉ] cat -s poem1.txt

não afeta o conteúdo do arquivo de forma alguma; apenas altera a maneira como o gato exibe o arquivo.

Exibir guias

Se você quiser saber se o espaço em branco é causado por espaços ou guias, descubra usando a opção -T (show-tabs).

 cat -T poema1.txt 

As abas são representadas pela caracteres “^ I”.

IMAGEM_15

Exibindo as extremidades das linhas

Você pode verificar espaços em branco à direita usando a opção -E (show-ends) .

[PRÉ] cat -E poem1.txt

IMAGEM_16

As extremidades das linhas são representadas pelo caractere “$”.

Concatenando Arquivos

Não faz sentido ter um poema salvo em dois arquivos, com metade em cada um. Vamos juntar-se a eles e criar um novo arquivo com todo o poema nele.

 cat poem1.txt poem2.txt > jabberwocky.txt 

vamos usar o cat para checar nosso novo arquivo:

 cat jabberwocky.txt 

Nosso novo arquivo contém o conteúdo dos outros dois arquivos.

Anexando texto a um arquivo existente

Isso é melhor, mas na verdade, não é o poema inteiro. O último verso está faltando. O último verso em Jabberwocky é o mesmo que o primeiro verso.

Se tivermos o primeiro verso em um arquivo, podemos adicionar isso ao final do arquivo jabberwocky.txt, e nós vamos tem o poema completo.

Neste próximo comando, temos que usar > & gt ;, não apenas & gt ;. Se usarmos um único > nós substituiremos o jabberwocky.txt. Nós não queremos fazer isso. Queremos anexar texto à parte inferior dele.

 cat first_verse.txt > > jabberwocky.txt 

Vamos verificar o conteúdo do arquivo jabberwocky.txt:

 cat jabberwocky.txt 

E finalmente, todas as partes do poema estão juntas.

Redirecionando stdin

Você pode redirecionar a entrada do teclado em um arquivo usando cat. Tudo o que você digita é redirecionado para o arquivo até que você pressione Ctrl + D. Observe que usamos um único > porque queremos criar o arquivo (ou sobrescrevê-lo, se existir).

 cat > my_poem.txt 

Podemos começar a digitar assim que emitimos o comando. Nós pressionamos Ctrl + D quando terminamos. Podemos, então, verificar o conteúdo do novo arquivo com:

 cat meu poema.txt 

Isso soa como um distante turbina é provavelmente Lewis Carroll girando em seu túmulo em alta velocidade.

O comando tac

tac é semelhante ao gato, mas lista o conteúdo dos arquivos em ordem inversa.

Vamos ver isso:

 tac meu_poem.txt 

E o arquivo é listado na janela do terminal na ordem inversa. Neste caso, não tem efeito sobre seus méritos literários.

Usando tac Com stdin

Usar o tac sem um nome de arquivo fará com que ele funcione a entrada do teclado. Pressionar Ctrl + D interromperá a fase de entrada e tac listará em ordem reversa o que você digitou.

 tac 

IMAGEM_28

Quando Ctrl + D é pressionado, a entrada é invertida e listada na janela do terminal.

Usando o tac com arquivos de log

Além do baixo grau truques de salão, pode fazer alguma coisa útil? Sim pode. Muitos arquivos de log anexam suas entradas mais recentes na parte inferior do arquivo. Usando o tac (e, contra-intuitivamente, head) podemos inserir a última entrada na janela do terminal.

Usamos o tac para listar o arquivo syslog no sentido inverso e canalizá-lo para a cabeça. Dizendo head apenas para imprimir a primeira linha que recebe (que graças ao tac é a última linha no arquivo), vemos a última entrada no arquivo syslog.

 tac / var / log / syslog | head -1 

O cabeçote imprime a última entrada do arquivo syslog e então sai.

Observe que a cabeça está imprimindo apenas uma linha - conforme solicitado Mas a linha é tão longa que envolve duas vezes. É por isso que parece três linhas de saída na janela do terminal.

Usando tac com registros de texto

O último truque que tac tem na manga é uma beleza.

Normalmente, o tac opera em arquivos de texto, percorrendo linha por linha, de baixo para cima. Uma linha é uma sequência de caracteres terminada por um caractere de nova linha. Mas podemos dizer ao tac para trabalhar com outros delimitadores. Isso nos permite tratar "pedaços" de dados no arquivo de texto como registros de dados.

Digamos que tenhamos um arquivo de registro de algum programa que precisamos revisar ou analisar. Vamos dar uma olhada no seu formato com menos.

 menos logfile.dat 

Como podemos ver, há um formato de repetição para o arquivo. Existem seqüências de três linhas de valores hexadecimais. Cada conjunto de três linhas de hexadecimal tem uma linha de rótulo que inicia "= SEQ", seguida por uma seqüência de dígitos.

Se rolarmos para a parte inferior do arquivo, Podemos ver que há muitos desses registros. O último é numerado 865.

Suponhamos que, por qualquer motivo, precisamos trabalhar com esse arquivo em ordem reversa, registro de dados por registro de dados. A ordem de linha das três linhas hexadecimais em cada registro de dados deve ser preservada.

Faremos notar que as três linhas finais no arquivo começam com valores hexadecimais 93, E7 e B8, nessa ordem.

Vamos usar o tac para reverter o arquivo. É um arquivo muito longo, então vamos canalizar em menos.

 tac logfile.dat | less 

Isso inverte o arquivo, mas não é o resultado que queremos. Queremos que o arquivo seja revertido, mas as linhas em cada registro de dados devem estar em sua ordem original.

Registramos anteriormente que as três linhas finais no arquivo começam com valores hexadecimais 93, E7 e B8, nessa ordem. A ordem dessas linhas foi invertida. Além disso, as linhas "= SEQ" estão agora abaixo de cada conjunto de três linhas hexadecimais.

tac para o resgate.

 tac -b -r -s ^ = SEQ . + [0-9] + * $ logfile.dat | less 

Vamos decompô-lo.

A opção -s (separator) informa ao tac o que queremos usar como o delimitador entre nossos registros. Ele diz ao tac para não usar seu caractere usual de nova linha, mas usar nosso separador.

A opção -r (regex) diz ao tac para tratar a string separadora como uma expressão regular.

A opção -b (antes) faz com que tac liste o separador antes de cada registro em vez de depois dele (que é a posição usual de seu separador padrão, o caractere de nova linha).

O -s (separador) string ^ = SEQ. + [0-9] + * $ é decifrado da seguinte forma:

O caractere ^ representa o início da linha. Isto é seguido por = SEQ. + [0-9] + * $. Isso instrui tac a procurar cada ocorrência de “= SEQ.” No início de uma linha, seguida por qualquer sequência de dígitos (indicada por [0-9]) e seguida por qualquer outro conjunto de caracteres (indicado por * $ ).

Estamos dividindo o lote inteiro em menos, como sempre.

Nosso arquivo agora é apresentado em ordem inversa com cada “= SEQ ”Linha de etiqueta listada antes de suas três linhas de dados hexadecimais. As três linhas de valores hexadecimais estão em sua ordem original dentro de cada registro de dados.

Podemos verificar isso simplesmente. O primeiro valor das três primeiras linhas de hexadecimal (que eram as últimas três linhas antes do arquivo ser invertido) corresponde aos valores que tomamos um registro anterior: 93, E7 e B8, nessa ordem.

Esse é um truque para um one-liner de janela de terminal.

Tudo tem um propósito

No mundo Linux, até os comandos e utilitários aparentemente mais simples podem ter propriedades surpreendentes e poderosas.

A filosofia de design de utilitários simples que fazem uma coisa bem e que interagem facilmente com outros utilitários, deu origem a alguns pequenos comandos estranhos, como o tac. À primeira vista, parece um pouco estranho. Mas quando você perscruta abaixo da superfície, há um poder inesperado que você pode aproveitar para sua vantagem.

Ou, como outra filosofia diz: “Não despreze a cobra por não ter chifres, pois quem é diga que não se tornará um dragão? ”

LEIA EM SEGUIDA & rsaquo; Como ver quais aplicativos estão usando sua webcam no Windows 10 & rsaquo; Tecnologia do futuro: o que nos deixa mais entusiasmados & rsaquo; Como funcionam as casas inteligentes? & Rsaquo; O que vai acontecer com seu telefone Huawei ou Honor? & Rsaquo; Um Smart Plug pagará por si?

Via: How to Geek

Nenhum comentário