como posso retornar a saída de um texto [duplicado]

0

Isso está relacionado a uma pergunta que eu fiz em estouro. Ela permanece sem resposta, então eu tentei perguntar em segmentos

Meu objetivo é retornar a função especial \ n, se eu fosse executar

echo -e "My name is \nnick rock and i \nlive by the sea shore." > file

Então quando eu catar esse arquivo você tem algo parecido com isto

My name is
nick rock and i
live by the sea shore.

O que eu quero fazer é reverter a função \ n return, então quando faço o eco do arquivo com algo parecido com isto

echo -aoE '([a-zA-Z]){1,5}' file

output
My 
name 
is
nick 
rock 
and 
i
live 
by 
the 
sea 
shore.

Vou pegar isso em vez

My name is nick rock and i live by the sea shore
    
por hello moto 29.05.2018 / 10:28

4 respostas

1

O que você está procurando é

$ tr  '\n' ' ' < file
My name is  nick rock and i  live by the sea shore. 
O utilitário

tr é para traduzir conjuntos de caracteres, neste há apenas um caractere \n em SET1 e espaço em SET2. Quanto a < file , isso apenas redireciona o arquivo para o fluxo de stdin do programa.

Mas, se por algum motivo você precisar de um modo apenas de shell, isso é suficiente:

$ while IFS= read -r line || [ -n "$line" ]; do printf "%s " "$line" ; done < file
My name is  nick rock and i  live by the sea shore. 
    
por Sergiy Kolodyazhnyy 29.05.2018 / 10:33
2

você pode usar esta linha de comando, é uma melhoria de @Sergiv Kolodyazhnyy que imprime o \n no lugar certo

while IFS= read -r line || [ -n "$line" ]; do printf "%s " "$line" ; printf "\n" ; done < test.txt 

(desculpe não poder comentar)

    
por damadam 29.05.2018 / 10:41
2

Você também pode repetir a substituição de comandos sem aspas:

echo $(<infile)
    
por devWeek 29.05.2018 / 13:08
1

Aqui estão algumas opções:

  1. usando awk , com um separador de registro não definido (também conhecido como 'modo de parágrafo') e o separador de campos padrão

    awk -vRS= '{$1=$1} 1' file
    My name is nick rock and i live by the sea shore.
    
  2. usando xargs sem comando explícito

    $ xargs < file
    My name is nick rock and i live by the sea shore.
    
  3. usando fmt do GNU coreutils:

    $ fmt file
    My name is nick rock and i live by the sea shore.
    
por steeldriver 29.05.2018 / 12:49