向文本添加常量值列

0 bash awk

我有一个文本文件具有以下格式:

0.000561859 100.001 0.724805
0.000994887 99.999 0.724788
0.0012519 100.002 0.724732
0.00138511 99.9941 0.724614
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想生成一个表,表格的第一列具有从第三列的第一个值得到的常量值,比如说

0.724805 0.000561859 100.001 0.724805
0.724805 0.000994887 99.999 0.724788
0.724805 0.0012519 100.002 0.724732
0.724805 0.00138511 99.9941 0.724614
.
.
.
Run Code Online (Sandbox Code Playgroud)

我怎么能用bash在Linux中做到这一点?

fed*_*qui 5

awk 如果要存储第一行的第3个值的值,然后沿所有行打印,则可以是一个不错的选择.

$ awk 'NR==1 {v=$3}{print v,$0}' file
0.724805 0.000561859 100.001 0.724805
0.724805 0.000994887 99.999 0.724788
0.724805 0.0012519 100.002 0.724732
0.724805 0.00138511 99.9941 0.724614
Run Code Online (Sandbox Code Playgroud)

说明

  • NR是指行数.因此,NR==1 {v=$3}v在行号1中存储变量中第3个值的值.因此,这个条件只执行一次,一个读取第一行.
  • 一旦存储了值v,并且每次读取一行,它都会打印v加上整行($0){print v,$0}.所以这条件在每一行都执行.