Tengo los siguientes datos y necesito ponerlos todos en una línea.
Tengo esto:
22791
;
14336
;
22821
;
34653
;
21491
;
25522
;
33238
;
Necesito este:
22791;14336;22821;34653;21491;25522;33238;
EDITAR
Ninguno de estos comandos funciona perfectamente.
La mayoría de ellos deja que los datos se vean así:
22791
;14336
;22821
;34653
;21491
;25522
Respuestas:
Editar:
Si ninguno de los comandos publicados aquí funciona, entonces tiene algo más que una nueva línea que separa sus campos. Posiblemente tenga terminaciones de línea DOS / Windows en el archivo (aunque esperaría que las soluciones Perl funcionen incluso en ese caso).
Tratar:
Si eso no funciona, entonces tendrá que inspeccionar su archivo más de cerca (por ejemplo, en un editor hexadecimal) para averiguar qué caracteres hay realmente allí que desea eliminar.
fuente
tr
no es adecuado para líneas vacías. ¿Qué piensas? - - Creo quesed
es la mejor opción como se describe aquí stackoverflow.com/q/16414410/54964echo -n $(tr -d "\n" < yourfile.txt) > yourfile.txt
Debe hacer el trabajo.
fuente
perl -pie 's/\R//g' filename
fuente
paste -sd ""
no funciona en STDIN de forma predeterminada, por lo que si lo está utilizando, use:(some command) | paste -sd "" -
paste -sd'\0' -
O
O
Esta página aquí tiene un montón de otros métodos para eliminar nuevas líneas.
editado para eliminar el abuso felino :)
fuente
utilizar
para averiguar CUÁL es el personaje ofensivo. luego usa
para LF
para CRLF
fuente
Puede editar el archivo en vim:
fuente
:%s/\n/ /g
Usando man 1 ed:
fuente
Dato curioso: usa ASCII en su lugar.
(Editado porque no vi la maldita respuesta que tenía la misma solución, la única diferencia era que la mía tenía ASCII)
fuente
Usa sed con clases POSIX
Esto eliminará todas las líneas que contengan solo espacios en blanco (espacios y tabulaciones)
sed '/^[[:space:]]*$/d'
Simplemente tome lo que sea con lo que esté trabajando y canalícelo a eso
Ejemplo
cat filename | sed '/^[[:space:]]*$/d'
fuente
fuente
Si los datos están en file.txt, entonces:
El "
$(<file.txt)
" lee el archivo y da el contenido como una serie de palabras que "hacen eco" luego hacen eco con un espacio entre ellas. El comando 'tr' borra todos los espacios:fuente
tr -d '\n' < file.txt
, que es lo que hace la respuesta aceptada (y me sorprende no haberla escrito en ese momento). Esto probablemente fue escrito para mostrar 'otra forma más de hacerlo'.xargs
también consume líneas nuevas (pero agrega una línea nueva final):fuente
Suponiendo que solo desea mantener los dígitos y el punto y coma, lo siguiente debería funcionar asumiendo que no hay problemas importantes de codificación, aunque también eliminará la última "nueva línea":
Puede modificar fácilmente lo anterior para incluir otros caracteres, por ejemplo, si desea conservar puntos decimales, comas, etc.
fuente
Usando el editor de texto gedit (3.18.3)
\n\s
en el campo BuscarNota: esto no aborda exactamente el problema original de 7 años del OP, pero debería ayudar a algunos usuarios novatos de Linux (como yo) que encuentran su camino aquí desde los SE con preguntas similares de "cómo consigo mi texto todo en una línea" .
fuente
Estaba teniendo el mismo caso hoy, súper fácil en vim o nvim, puede usar
gJ
para unir líneas. Para su caso de uso, simplemente hagaesto unirá todas sus 99 líneas. Puede ajustar el número
99
según sea necesario según la cantidad de líneas que desee unir. Si solo se une a 1 línea, entonces sologJ
es suficiente.fuente
Lo haría con awk, p. Ej.
(una desventaja es que a se "acumula" en la memoria).
EDITAR
¡Olvidé printf! Así también
o probablemente mejor, lo que ya se le dio en los otros ans usando awk.
fuente
Por lo general, obtengo este caso de uso cuando estoy copiando un fragmento de código de un archivo y quiero pegarlo en una consola sin agregar nuevas líneas innecesarias, terminé haciendo un alias de bash
(lo llamé
oneline
si tiene curiosidad)xsel -b -o
lee mi portapapelestr -d '\n'
elimina nuevas líneastr -s ' '
elimina los espacios recurrentesxsel -b -i
empuja esto de vuelta a mi portapapelesdespués de eso, pegaría el nuevo contenido del portapapeles en línea en una consola o lo que sea.
fuente
Se está perdiendo la respuesta más obvia y rápida, especialmente cuando necesita hacer esto en la GUI para corregir un ajuste de palabras extraño.
Abierto
gedit
Luego Ctrl+ H, luego coloque en el
Find
cuadro de texto\n
y enReplace with
un espacio vacío,luego complete la casilla de verificación
Regular expression
y listo.fuente
Para eliminar también la nueva línea final al final del archivo
fuente