Eu tenho um diretório com vários .txt
arquivos.
Em cada um desses arquivos, desejo selecionar a primeira linha e imprimi-la em um novo .txt
arquivo (para obter uma lista de todas as primeiras linhas).
Eu tentei com o awk
e sed
comandos e isso combinado com um ciclo, mas sem sucesso.
command-line
text-processing
Annemieke Smet
fonte
fonte
Respostas:
Use
head
:-n1
dizhead
para extrair apenas a primeira linha.-q
diz à cabeça para não imprimir o nome do arquivo.fonte
Usando
grep
:grep
corresponderá a qualquer caractere e sairá após a primeira correspondência, ou sejagrep
, produzirá as primeiras linhas de todos os arquivos de entrada e estamos salvando-osout.txt
.fonte
Usando apenas o Bash:
*.txt
é expandido para a lista de pastas / arquivos que terminam com.txt
no diretório de trabalho atual (já que existem apenas pastas de arquivos que terminam com.txt
não são uma preocupação);<"$f" read line
lê uma linha do caminho do arquivo armazenadof
e a armazenaline
;printf "$line\n" >>new.txt
: acrescenta o conteúdo deline
anew.txt
;fonte
Você já tentou
awk
, aqui está umaawk
versãofonte
Outra abordagem do AWK é dizer ao AWK para imprimir, mas depois vá imediatamente para o próximo arquivo
sed
também permite a impressão de linhas específicas. Aqui eu combinei isso comfind
E perl:
E por último mas não menos importante ,
grep
Salvar tudo em um único arquivo é apenas uma questão de acrescentar
> outputFile.txt
no final desses comandos.fonte