Supongamos que tengo un archivo:
Archivo1:
PAPER TEAM MANISH NISHA GARIMA JYOUTI ........etc
File2 quiero:
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI
Filas a la conversión de columna de File1.
awk
sed
text-formatting
yisha
fuente
fuente
Respuestas:
Utilizando
tr
, reemplace cada carácter de espacio repetido () con un solo carácter de nueva línea (
\n
).Pero creo que quieres algo como esto?
Con lo
awk
que podríamos hacer:Esto une todas las mismas posiciones de número archivadas e
END
imprime el resultado que sería la primera fila en la primera columna, la segunda fila en la segunda columna, etc. Por supuesto, el archivo de entrada está limitado al tamaño de su memoria.fuente
Simplemente podrías hacer esto a través de grep. Por defecto grep, imprimiría la coincidencia en una nueva línea separada.
O
fuente
grep
También puedes usar el
fmt
comando:fuente
Con GNU datamash :
fuente
datamash
Parece la mejor herramienta para la tarea, ¡pero fascinante cuántas otras herramientas podrían usarse!También puedes hacer esto usando
sed
:NOTA: No maneja la situación donde las palabras contienen espacios.
fuente
\n
como nueva líneaUtilizando
awk
, estableciendo el separador de campo de salida (OFS
) como el separador de registro (línea) (RS
):fuente
Usando un
for
bucle:fuente
También puedes intentar usar
sed
Tenga en cuenta que estoy usando
@
como separador para la operación de sustitución. Esto también creará un archivo de respaldo. En caso de que no necesite una copia de seguridad, elimine .bakfuente
Versión de Python:
Esto usa la
<
redirección al stdin de pythoninput.txt
y escribe paraoutput.txt
usar la>
redirección. El one-liner en sí lee todas las líneas destdin
una lista de cadenas, donde todos los espacios se reemplazan con nuevas líneas, y reconstruimos todo el texto usando la.join()
función.El enfoque alternativo para evitar que se reemplacen múltiples espacios en serie con líneas nuevas es utilizar
.split()
para dividir la línea en una lista de palabras. De esa manera, podemos asegurarnos de que cada palabra esté separada solo por una nueva líneafuente
Usando
xargs
, (robado de la respuesta de souravc ):O si se necesita algún reformateo menor, use
printf
cadenas de formato como sea necesario:fuente
Mi solución sería:
fuente
fuente