Tengo varios archivos de texto que contienen 12 líneas y 3 columnas.
Ejemplo:
2 6 0.74
42 6 0.58
80 6 0
112 6 0.24
132 6 1
216 6 0.7
342 6 0
390 6 0.21
432 6 0.56
466 6 0.75
524 6 0.6
646 6 0.9
Quiero establecer todos los valores de la tercera columna en 1 en todas las líneas.
La salida debería verse así:
2 6 1
42 6 1
80 6 1
112 6 1
132 6 1
216 6 1
342 6 1
390 6 1
432 6 1
466 6 1
524 6 1
646 6 1
¿Alguien sabe un comando que pueda resolver este problema?

awk '{print $1, $2, "1"}' inputfile > newfiletratar
awk
$3 = 1establecerá el tercer campo en 1sed (aquí GNU u busybox
sedcon su-iopción para la edición in situ)[0-9.]*$es una secuencia de0a9y.hasta el final de la línea.sed (golfed 4 bytes)
[^ ]*$cualquier carácter que no sea espacio, hasta el final de la línea.fuente
sed 's/[^ ]*$/1/'->awkgolf:awk \$3=1(POSIX pero no funcionaría con el awk de los años 70 como se encuentra en / bin en Solaris)awkla solución es realmente genial .... se puede explicar plsLas líneas en su salida esperada parecen terminar en dos caracteres de espacio y tienen campos separados por una pestaña y un carácter de espacio.
Si eso es lo que quieres, entonces necesitarías:
O con
sed:fuente
Simplemente con GNU
sed, usando-ipara reemplazar el texto directamente en el archivo:Las columnas se corresponden con los grupos de expresiones regulares en el paréntesis, la reutilización de ellos con
\1y\2y luego con un "1" para reemplazar el último grupo.En este caso de uso, la solución propuesta usando también
awkes agradable y corta.fuente
esto hará el trabajo:
fuente
fuente