什么awk '{print $1+0.45 " " $2 " " $3 }' positionXYZ > positionX0.45YZ
意思?这是否意味着更改第一个文件中的一行并将新数据放入第二个文件中?
ter*_*don 14
让我们分解一下。awk '{foo}' file将表达式foo应用于每一行file并将结果打印到终端(标准输出)。awk在空白处拆分其输入行(默认情况下)并将每个字段另存为$1,$2等等。
因此,您正在运行的实际表达式意味着:读取每个输入行,将第一个字段的值加上 0.45,然后打印该字段以及第二个和第三个字段。用一个简单的例子最容易解释:
$ 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
Run Code Online (Sandbox Code Playgroud)
因此,如您所见,awk脚本将 0.45 添加到每行的第一个字段,然后与第二个和第三个字段一起打印。第四个被忽略,因为你没有告诉它打印$4。
下一位与 无关awk,该>符号用于输出重定向,并由外壳程序使用(bash 或 zsh 或您正在使用的任何东西)。通常command > file将保存command在文件中的输出,如果文件存在则file 覆盖文件的内容,如果不存在则创建它。
把所有东西放在一起:
$ 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
Run Code Online (Sandbox Code Playgroud)