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 > newfile
tratar
awk
$3 = 1
establecerá el tercer campo en 1sed (aquí GNU u busybox
sed
con su-i
opción para la edición in situ)[0-9.]*$
es una secuencia de0
a9
y.
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/'
->awk
golf:awk \$3=1
(POSIX pero no funcionaría con el awk de los años 70 como se encuentra en / bin en Solaris)awk
la 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-i
para 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
\1
y\2
y luego con un "1" para reemplazar el último grupo.En este caso de uso, la solución propuesta usando también
awk
es agradable y corta.fuente
esto hará el trabajo:
fuente
fuente