Eu tenho vários arquivos que contêm informações de texto ascii nas primeiras 5 a 10 linhas, seguidas por informações matriciais bem tabuladas. Em um script de shell, desejo remover essas primeiras linhas de texto para poder usar as informações da matriz pura em outro programa. Como posso usar comandos bash shell para fazer isso?
Se for de alguma ajuda, estou usando o RedHat e os sistemas Linux linux.
bash
shell-script
text-processing
Paulo
fonte
fonte
sed -i -e 1,3d yourfile
. Isso não ecoará nada, apenas modificará o arquivo no local. Se você não precisar canalizar o resultado para outro comando, isso é mais fácil.sed -i
especificamente. A maioria das implementações apenas exclui o arquivo e o substitui por um novo, que não funciona para links, pois você acaba deixando o original em outro local.sed -i '1,3d' file.txt
Isso exclui as 3 primeiras linhas do arquivo.txt.
fonte
Se as linhas tabuladas tiverem um caractere de tabulação:
(
␉
sendo um caractere de tabulação literal) ou equivalenteEm um script bash / ksh / zsh, você pode escrever
$'\t'
para uma guia, por exemplo,grep $'\t'
oused -n $'/\t/p'
.Se você deseja eliminar 10 linhas no início do arquivo:
(observe que é
+11
para eliminar 10 linhas, porque+11
significa "começar da linha 11" e numerar as linhas de 1) ouNo Linux, você pode aproveitar a
-i
opção do GNU sed para modificar arquivos no local:Ou você pode usar um loop de shell e arquivos temporários:
Ou, se você não quiser modificar os arquivos no local, dê um nome diferente a eles:
fonte
Você pode usar o Vim no modo Ex:
1
mover para a primeira linha5
selecione 5 linhasd
excluirx
salvar e fecharfonte
eco "a \ nb" | sed '1d' # exclui a primeira linha
cat list.txt | sed '1d'> list.csv # leia list.txt e escreva list.csv sem primeira linha
Outros comandos úteis:
grep '^ |' # localiza o primeiro caractere (pipe |)
sed 's / | // g' # exclui o pipe
sed 's / // g' # exclui espaço
fonte
Por porcentagem
Usando
bash
, para limpar um arquivo usando um número percentual em vez de um número absoluto de linhas:Cuidado porque esse comando pode ser destrutivo, pois exclui o conteúdo no local, sem criar uma cópia.
Exclui os primeiros 75% das linhas do arquivo mencionado.
fonte