remove uma aba e no final de uma linha

1
printf "%s\t" HEMES n{1..1600} >file_a
sed -i 's/\t*$//' file_a > file_a

remove uma guia que é causada no final da linha após a primeira linha do código (onde o material é impresso).

Meu problema agora é que eu preciso remover a aba atrás da linha (começando com o HEMES) em um arquivo maior que tem mais linhas. Se eu apenas tentar a linha sed que não funciona. A linha da qual desejo remover o caractere é sempre a primeira linha do arquivo.

    
por ktoui 19.07.2015 / 07:10

1 resposta

1

Em vez de fazer tudo em uma linha e enviar para o arquivo, separe-o em duas partes - exiba a sequência HEMES e anexe a sequência n {1 ... 1600}: printf "%s" HEMES > file_a; printf "%s\t" n{1..1600} >> file_a .

Se você precisar remover especificamente essa guia entre HEMES e n1 em um arquivo já existente, veja aqui uma awk solution:

awk ' {sub(/[[:blank:]]/,""); print} ' file_a > tmp_file && cat tmp_file > file_a .

O que isto faz é pegar a sub-função, que apaga a ocorrência primeira da aba, nós enviamos esse texto para um arquivo temporário, e então levamos esse conteúdo de volta ao arquivo_a. A razão para a troca entre arquivos é esta: a menos que você esteja usando a versão awk que permite edição inline (gnu awk, eu acredito), isso funcionará em qualquer caso - awk, mawk, nawk, etc.

    
por Sergiy Kolodyazhnyy 19.07.2015 / 07:45