我的代码和输入文件如下。但我的代码并没有打印出我想要的内容。它打印输入文件的所有内容。但我只想打印"标准偏差"柱。如何使用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;柱。我该如何解决这个问题?
答案 0 :(得分:1)
使用cut参数可以解决问题:
echo "$line" | tr -s " " | cut -d " " -f 3
tr -s&#34; &#34;删除所有&#34; &#34; (空格)char只有一个。 cut -d定义你的分隔符,-f选择你想要打印的colomn(fieldset)