Tenho os seguintes dados e preciso colocá-los em uma única linha.
Eu tenho isto:
22791
;
14336
;
22821
;
34653
;
21491
;
25522
;
33238
;
Eu preciso disso:
22791;14336;22821;34653;21491;25522;33238;
EDITAR
Nenhum desses comandos está funcionando perfeitamente.
A maioria deles permite que os dados tenham a seguinte aparência:
22791
;14336
;22821
;34653
;21491
;25522
Respostas:
Editar:
Se nenhum dos comandos postados aqui estiver funcionando, você tem algo diferente de uma nova linha separando seus campos. Possivelmente você tem terminações de linha DOS / Windows no arquivo (embora eu espere que as soluções Perl funcionem mesmo nesse caso)?
Experimentar:
Se isso não funcionar, você terá que inspecionar seu arquivo mais de perto (por exemplo, em um editor hexadecimal) para descobrir quais caracteres estão realmente lá que você deseja remover.
fonte
tr
não é adequado para linhas vazias. O que você acha? - - Acho quesed
é a melhor opçãoecho -n $(tr -d "\n" < yourfile.txt) > yourfile.txt
Deve fazer o trabalho.
fonte
perl -pie 's/\R//g' filename
fonte
paste -sd ""
não funciona em STDIN por padrão, então, se você estiver(some command) | paste -sd "" -
paste -sd'\0' -
Ou
Ou
Esta página aqui tem vários outros métodos para remover novas linhas.
editado para remover o abuso felino :)
fonte
usar
para descobrir QUAL é o personagem ofensivo. então use
para LF
para CRLF
fonte
Você pode editar o arquivo no vim:
fonte
:%s/\n/ /g
Usando man 1 ed:
fonte
Fato do nerd: use ASCII.
(Editado porque não vi a maldita resposta que tinha a mesma solução, a única diferença era que a minha tinha ASCII)
fonte
Use sed com classes POSIX
Isso removerá todas as linhas que contêm apenas espaços em branco (espaços e tabulações)
sed '/^[[:space:]]*$/d'
Basta pegar o que você está trabalhando e canalizar para aquele
Exemplo
cat filename | sed '/^[[:space:]]*$/d'
fonte
fonte
Se os dados estiverem em arquivo.txt, então:
O '
$(<file.txt)
' lê o arquivo e fornece o conteúdo como uma série de palavras que 'ecoam' em seguida com um espaço entre elas. O comando 'tr' então exclui todos os espaços:fonte
tr -d '\n' < file.txt
, que é o que a resposta aceita (e estou surpreso por não ter escrito na época). Isso provavelmente foi escrito apenas para mostrar "mais uma maneira de fazer isso".xargs
consome novas linhas também (mas adiciona uma nova linha final):fonte
Supondo que você deseja manter apenas os dígitos e os pontos-e-vírgulas, o procedimento a seguir deve funcionar, presumindo que não há problemas de codificação importantes, embora também remova a última "nova linha":
Você pode facilmente modificar o acima para incluir outros caracteres, por exemplo, se quiser reter pontos decimais, vírgulas, etc.
fonte
Usando o editor de texto gedit (3.18.3)
\n\s
no campo EncontrarObservação: isso não resolve exatamente o problema original do OP de 7 anos, mas deve ajudar alguns usuários de Linux noob (como eu) que encontram seu caminho aqui desde os SEs com perguntas semelhantes "como faço para colocar meu texto em uma linha" .
fonte
Estava tendo o mesmo caso hoje, super fácil no vim ou nvim, você pode usar
gJ
para juntar linhas. Para seu caso de uso, basta fazerisso irá juntar todas as suas 99 linhas. Você pode ajustar o número
99
conforme necessário de acordo com quantas linhas juntar. Se apenas juntar 1 linha, então sógJ
é bom o suficiente.fonte
Eu faria isso com awk, por exemplo
(uma desvantagem é que a é "acumulado" na memória).
EDITAR
Esqueci o printf! Assim também
ou melhor, o que já foi dado nos outros ans usando awk.
fonte
Normalmente recebo este caso de uso quando estou copiando um trecho de código de um arquivo e quero colá-lo em um console sem adicionar novas linhas desnecessárias, acabei criando um alias de bash
(chamei
oneline
se você estiver curioso)xsel -b -o
lê minha pranchetatr -d '\n'
remove novas linhastr -s ' '
remove espaços recorrentesxsel -b -i
empurra isso de volta para a minha pranchetadepois disso, eu colaria o novo conteúdo da área de transferência on-line em um console ou qualquer outra coisa.
fonte
Você está perdendo a resposta mais óbvia e rápida, especialmente quando você precisa fazer isso na GUI para consertar alguma quebra de linha estranha.
Abrir
gedit
Em seguida, Ctrl+ H, em seguida, coloque na
Find
caixa de texto\n
e emReplace with
um espaço vazioe preencha a caixa de seleção
Regular expression
e voila.fonte
Para remover também a nova linha final no final do arquivo
fonte