Linux 读取两列数据文件并在bashscript中写入第一列的第一个元素
我有一个数据文件,比如input.dat:Linux 读取两列数据文件并在bashscript中写入第一列的第一个元素,linux,bash,shell,Linux,Bash,Shell,我有一个数据文件,比如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
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列数据。有人能帮我在脚本中到底应该写什么代码吗。非常感谢。文本操作通常是用awk完成的,而不是纯bash。以下是您将如何做到这一点:
awk 'NR==10 || NR==20 { print $1 }' file
它也可以通过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的/^/'将其删除,因此:
您应该解释您尝试过的代码。再次查看《谢谢》中的文档。我还有一个问题。可以使用脚本中的命令将上述脚本生成的行写入数据文件。例如,如果我写,sed-n-e10p-e20p input.dat | sed-e's/^/'-e's/*/'>dataset.dat对我来说不起作用。你能给我提些建议吗。非常感谢。@Leostorm10 sed-n-e10p-e20p input.dat | sed-e's/^/'-e's/*/'>dataset.dat在我的系统中工作正常。好的。我现在已经完全掌握了。但是,如果我想分开的话,sed-n-e10p input.dat | sed-e's/^/'-e's/*/'>dataset.dat sed-n-e 20p input.dat | sed-e's/^/'-e's/*/'>dataset.dat数据集中没有写入两个数字。dat@Leostorm10因为>不附加内容,但将其写入删除以前的内容。如果要将内容附加到文件末尾,必须使用>>运算符。
sed -n -e 10p -e 20p input.dat | sed -e 's/^ //' -e 's/ .*//'