Tengo un archivo de texto simple llamado "ejemplo".
Lectura con comando de terminal: cat example
Salida:
abc cdef ghi jk lmnopq rst uv wxyz
Quiero convertir (transformar) en la siguiente forma: (salida esperada de cat example
)
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
¿Cómo puedo hacer esto a través de la línea de comandos?
(Este es solo un archivo de ejemplo, quiero convertir la posición de la palabra en columna vertical)
command-line
text-processing
Pandya
fuente
fuente
Respuestas:
Algunas opciones
El clásico, usa
tr
:Utilizar
cut
Utilizar
sed
Utilizar
perl
Usa el caparazón
fuente
sed
ejemplo, necesitaba agregar un$
para obtener bash para reemplazar con una nueva línea real, es decir:sed $'s/ /\\\n/g' example
sed $'s/ /\\n/g'
Prueba el siguiente comando
O
Ejemplo:
Explicación:
RS (separador de registros) es una variable awk incorporada. En el primer comando, el valor dado a la variable de separación de Registro es espacio. así que awk rompe la línea de impresión cada vez que encuentra un espacio.
En el segundo comando, el valor dado a la variable RS es espacio o un nuevo carácter de línea. Este comando elimina la línea en blanco adicional que aparece mientras se ejecuta el primer comando.
fuente
Puedes usar
xargs
,o mejor
fuente
xargs -n 1 < example
te salva 1 gatitoUsando un
perl
oneliner:Reemplazará espacios y pestañas con "ENTER" (también conocido como
\n
)fuente
Nadie publicó Python, así que aquí está eso:
Redirigimos el archivo de entrada al
python
flujo stdin de 'y lo leemos línea por línea. Cada línea se despoja de su nueva línea final, se divide en palabras y luego se vuelve a unir en una cadena donde cada palabra está separada por una nueva línea. Esto se hace para garantizar tener una palabra por línea y evitar que se inserten varias líneas nuevas en caso de que haya varios espacios al lado de El uno al otro. Finalmente, terminamos con una lista de cadenas, que luego se une nuevamente en una cadena más grande y se imprime en la secuencia estándar. Eso luego puede ser redirigido a otro archivo con> out.txt
redirección.fuente
Similar al 'tr' anterior pero con las adiciones:
También funciona para pestañas
Convierte múltiples espacios o pestañas a 1 nueva línea
fuente