Removendo uma linha de um arquivo que possui apenas caractere específico

2

Como remover uma linha específica que contém apenas caracteres de fim de linha no Unix.

O conteúdo do arquivo é o seguinte,

H       XXXXXXXXXXXXXXXXXX       ""$SEQ_NO $
$
D^I001000456108^IU$

Deveria ser,

H       XXXXXXXXXXXXXXXXXX       ""$SEQ_NO $
D^I001000456108^IU$
    
por user3156862 05.08.2016 / 13:42

4 respostas

2

Você pode fazer algo como

sed '/^\$*$/d' filename

Amostra

$ cat filename
H       XXXXXXXXXXXXXXXXXX       ""$SEQ_NO $
$
D^I001000456108^IU$

$ sed '/^\$*$/d' filename
H       XXXXXXXXXXXXXXXXXX       ""$SEQ_NO $
D^I001000456108^IU$
    
por 05.08.2016 / 14:01
2

Você pode usar sed(1) para excluir todas as linhas que consistem apenas em CRs:

cat your_file.txt | sed -e '/^$/d'
    
por 05.08.2016 / 13:57
1
grep -vx '\s*\$\s*' file.txt
  • -x Selecione apenas as correspondências que correspondem exatamente à linha inteira
  • -v Inverte o sentido de correspondência para selecionar linhas não correspondentes
  • \s* zero ou mais caracteres em espaço em branco
  • \$ match $ character

Se soubermos que os espaços em branco iniciais e finais não estão presentes nas linhas em questão:

grep -vx '\$' file.txt
    
por 05.08.2016 / 15:00
1

Isso é apenas:

grep . < file.in > file.out

grep . procura por linhas que contenham pelo menos um caractere. Então, são todas as linhas, exceto as vazias ou aquelas que contêm sequências de bytes que não formam nenhum caractere válido.

Com:

LC_ALL=C grep .

Garantiríamos que todas as sequências de bytes formassem caracteres válidos, por isso manteria essas linhas de texto inválidas, se houver. Ou você poderia usar:

grep -vx ''

Outra opção é:

awk length < file.in > file.out

Mais uma vez, você pode encontrar awk implementações em que length pode retornar 0 para linhas que contêm apenas caracteres não.

Se você deseja remover linhas que consistem em apenas um caractere $ (seguido pelo caractere de nova linha), então:

grep -vxF '$' < file.in > file.out
    
por 05.08.2016 / 15:13

Tags