我有一个数据文件,比如input.dat:
0.00000 -21.9934807
0.00349 -21.9953289
0.00697 -22.0007229
0.01046 -22.0094204
0.01395 -22.0210171
0.01743 -22.0350628
0.02092 -22.0510826
0.02441 -22.0685902
0.02789 -22.0871773
0.03138 -22.1064396
0.03487 -22.1260700
0.03836 -22.1457787
0.04184 -22.1653156
0.04533 -22.1844902
0.04882 -22.2031174
0.05230 -22.2210617
0.05579 -22.2381897
0.05928 -22.2543869
0.06276 -22.2695751
0.06625 -22.2836666
0.06974 -22.2965908
0.07322 -22.3082924
0.07671 -22.3187332
0.08020 -22.3278618
0.08368 -22.3356419
0.08717 -22.3420353
0.09066 -22.3470383
0.09414 -22.3506260
0.09763 -22.3527832
0.10112 -22.3535042
我想在bash脚本中读取文件,只写第10行,第1列数据(0.03138)。类似地,应该写出第20行,第1列数据。可以帮我确切地说我应该在脚本中编写什么代码。非常感谢提前。
答案 0 :(得分:2)
文本操作通常使用awk,而不是纯粹的bash。您将如何做到这一点:
awk 'NR==10 || NR==20 { print $1 }' file
答案 1 :(得分:1)
也可以使用sed
完成。
只选择第10行和第20行:
sed -n -e 10p -e 20p input.dat
仅提取第一列:
sed -n -e 10p -e 20p input.dat | sed -e 's/ .*//'
如果每行以空格开头(就像我在复制input.dat内容时所面对的那样),您可以使用sed -e 's/^ //'
删除它,所以:
sed -n -e 10p -e 20p input.dat | sed -e 's/^ //' -e 's/ .*//'