Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 读取两列数据文件并在bashscript中写入第一列的第一个元素_Linux_Bash_Shell - Fatal编程技术网

Linux 读取两列数据文件并在bashscript中写入第一列的第一个元素

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

我有一个数据文件,比如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列数据。有人能帮我在脚本中到底应该写什么代码吗。非常感谢。

文本操作通常是用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/ .*//'