Crie um novo arquivo removendo o novo caractere de linha no final do arquivo

2

Eu tenho um arquivo simples que contém os seguintes registros de dados entre H: e T :.

H:20050427 HEADER RECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
T:20050427 TRAILER RECORD
[blank space]

[espaço em branco] é uma nova linha (chave de retorno de carro) criada sem registros após T:

Como faço para remover o (s) espaço (s) vazio (s) (se presente) do arquivo e criar um novo arquivo com dados que estão presentes entre H: e T:?

    
por Arun 25.05.2011 / 15:36

2 respostas

2

Se você quiser apenas remover linhas all [blank space] (podem conter qualquer espaço em branco em geral):

sed '/^[[:space:]]*$/ d' filename > newfile

ou simplesmente (por que se preocupar com awk ou sed ):

grep . filename > newfile

ou para imprimir somente entre linhas H: e T::

sed -n '/^H:.*/, /^T:.*/ p' filename > newfile
    
por 25.05.2011 / 15:42
0

Você está meio que fazendo duas perguntas diferentes; Não tenho certeza do que você está realmente tentando fazer

Remover linhas em branco

Use awk para corresponder a qualquer linha com um caractere e apenas imprimi-los:

$ awk '/./ {print}' /path/to/your/file

Apenas linhas de saída entre H: e T:

Use awk para corresponder às linhas que começam com H: e T: e apenas as linhas de saída entre elas (isso assume que nenhuma das outras linhas terá esses prefixos):

$ awk '/^H:/,/^T:/ {print}' /path/to/your/file
    
por 25.05.2011 / 15:42