使用shell脚本从文件中的特定行读取float

时间:2017-11-10 02:32:09

标签: bash shell awk

我有一系列数据文件,我需要从中获取一些特定的值。我知道文件中数据所在的行。我的数据文件看起来像这样

x    y    z
1    0.2  0.3
2    0.1  0.2
3    0.5  0.6
etc.

我使用shell脚本访问文件,从每个文件中收集所需的数据,并将收集的数据输出到一个文件中。

例如,我需要第3行中的y值,0.1。我试过以下

let dataLine=3
let yVal=`head -n $dataLine dataFile | tail -n 1 | awk '{print $2}'`

但是我收到以下错误

let: yVal=0.1: syntax error: invalid arithmetic operator (error token is ".1")

我尝试在| bc之后添加awk '{print $2}'但是它甚至没有为应该分配给yVal的内容注册正确的值。当我按照上面所示进行操作时,它确实显示它正在识别正确的行和列中的值。

感谢您的帮助,

2 个答案:

答案 0 :(得分:0)

如果您想获得第3行的第二个字段,那么以下内容可能对您有帮助。

解决方案1: 如果您想将任何shell变量的值传递给任何awk变量,那么以下内容可能对您有帮助。< / p>

line_number=3
awk -v line="$line_number" 'FNR==line{print $2}'  Input_file

解决方案第二: 如果您想直接打印第三行的第二个字段,那么以下内容可以帮助您。

awk 'FNR==3{print $2}'  Input_file

答案 1 :(得分:0)

$ dataLine=3
$ yVal=$(awk -v dataLine="$dataLine" 'NR==dataLine{print $2}' data)
$ echo $yVal
0.1