Substitua \ n com espaço em branco em um arquivo

1

Eu quero substituir \n por blank

Entrada file1

A\n
D\n 

Saída file2 que eu quero

A       
D  

Eu tentei comandos abaixo, mas não consegui substituir, por favor, seja necessário.

cat OUT | tr '\n' ' '
    
por yisha 10.03.2015 / 09:31

6 respostas

3

Muitos bons ansers, vou adicionar o modo sed

 sed 's#\n##g' file1 >  file2

Alguém tem o caminho do alto da cabeça deles?

    
por 10.03.2015 / 11:11
2

Uma alternativa seria levar apenas o primeiro caractere usando cut :

$ cut -c1 < input_file 
A
D
    
por 10.03.2015 / 10:49
1

Do post:

I tried below commands but not able to replace please do needful.

cat OUT | tr '\n' ' '

O problema com o comando acima é: tr entende \n como "caractere de nova linha"

De página de manual :

$ man tr | grep Interpreted -A 18
       SETs are specified as strings of characters.  Most represent themselves.  Interpreted sequences are:

       \NNN   character with octal value NNN (1 to 3 octal digits)

       \     backslash

       \a     audible BEL

       \b     backspace

       \f     form feed

       \n     new line

       \r     return

       \t     horizontal tab

       \v     vertical tab

Portanto, para especificar \n , é necessário especificar [barra invertida] [n], ou seja, \n (consulte a especificação listada acima). Use o seguinte comando:

tr -s '\n' ' '

Para cat file1 e redirecionamento ( > ) para file2 Usar:

cat file1 | tr -s '\n' ' ' > file2

Mas o problema com o uso de tr é que ele traduz TODOS \ e n para o espaço .

Por isso, recomendo usar sed da seguinte forma:

Comando para sed de substituição ( sed 's/old-string/new-string/g' in > out ):

sed 's/\n/ /g' file1 > file2

Aqui apenas \n (palavra inteira) será convertido no espaço

    
por 11.03.2015 / 11:50
1

Se você quiser substituir os dois caracteres \ e n no final de cada linha por um espaço, use

sed 's/\n$/ /' < file1

Observe que sua saída de exemplo tem vários espaços após A e um único espaço após D , mas o comando acima sempre coloca um único espaço.

    
por 10.03.2015 / 14:08
-1

você pode tentar um truque!

Primeiro, elimine 'n' no final do arquivo:

cat "your_file.txt" | sed -e 's/\<n\>//g' > "new_file.txt"

depois, elimine o caractere "\":

cat "new_file.txt" | tr -s "\" " " > "final_file.txt"

e você terá a saída sem o \ n.

    
por 10.03.2015 / 15:45
-2

Você pode usar tr

tr -d '\n' < input_file > output_file

    
por 10.03.2015 / 09:36