如何使用bash脚本读取/打印特定列?

时间:2015-02-26 11:43:54

标签: bash shell

我的代码和输入文件如下。但我的代码并没有打印出我想要的内容。它打印输入文件的所有内容。但我只想打印"标准偏差"柱。如何使用bash脚本执行此操作?

我的代码:

#!/bin/bash
file="/path/input.txt"
while IFS= read -r line
do
   echo "$line" >> out.xvg
done <"$file"

input.txt中:

The terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version
of the License.

Read 2 sets of 201 points, dt = 0.01


                       standard      
set      average       deviation    

a1   2.445857e+01   2.145235e+01   
a2  -1.158344e+02   5.452454e+01  
a3   2.314415e+04   3.652432e+05  
a4  -5.153647e-03   7.235728e-02 

请求的输出:

2.145235e+01   
5.452454e+01  
3.652432e+05  
7.235728e-02 

更新

sed '/a1/,$!d' input.xvg | sed '$d' | awk '{print $3}' > output.txt

此代码有效但忽略了文件的最后一行。我检查了输入文件。这是在最后一行之后缺少换行符。但我想打印所有&#34;标准差&#34;柱。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用cut参数可以解决问题:

echo "$line" | tr -s " " | cut -d " " -f 3

tr -s&#34; &#34;删除所有&#34; &#34; (空格)char只有一个。 cut -d定义你的分隔符,-f选择你想要打印的colomn(fieldset)