¿Qué significa awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
significa? ¿Significa cambiar una fila en el primer archivo y poner los nuevos datos en el segundo?
Respuesta aceptada:
Analicemos esto. awk '{foo}' file
aplicará la expresión foo
a cada línea de file
e imprima el resultado en el terminal (salida estándar). awk
divide sus líneas de entrada en espacios en blanco (por defecto) y guarda cada campo como $1
, $2
etc.
Entonces, la expresión real que está ejecutando significa:lea cada línea de entrada, agregue 0.45 al valor del primer campo y luego imprima ese campo, así como el segundo y el tercero. Esto se explica más fácilmente con un ejemplo simple:
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt
10.45 20 30
50.45 60 70
Entonces, como puede ver, el awk
script agregó 0.45 al primer campo de cada línea y luego lo imprimió junto con el segundo y el tercero. El cuarto fue ignorado porque no le dijiste que imprimiera $4
.
El siguiente bit no tiene nada que ver con awk
, el >
El símbolo es para la redirección de salida y lo usa el shell (bash o zsh o lo que sea que esté usando). En general, command > file
guardará la salida del command
en el archivo file
sobrescribir el contenido del archivo si existe y crearlo si no existe.
Poniendo todo junto:
$ ls
file.txt
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt > file2.txt
$ ls
file2.txt file.txt
$ cat file2.txt
10.45 20 30
50.45 60 70