我有一系列数据文件,我需要从中获取一些特定的值。我知道文件中数据所在的行。我的数据文件看起来像这样
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
的内容注册正确的值。当我按照上面所示进行操作时,它确实显示它正在识别正确的行和列中的值。
感谢您的帮助,
答案 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