Grep 命令从文件中提取参数值

Grep 命令从文件中提取参数值

我对 UNIX 完全陌生,需要一些有关 grep 命令的帮助

我有一个包含 7 个参数值 S1、S2...、S7 的输出文件。如何使用 grep 命令仅提取值并将它们作为数组写入新文件,我稍后要绘制该文件。

<<<<< Function evaluation summary (APPROX_INTERFACE_1): 1808 total (1808 new, 0 duplicate)
<<<<< Best parameters          =
                      3.3500000000e+02 S1
                      1.0357218750e+00 S2
                      7.2046250000e+01 S3
                      7.2872921875e+01 S4
                      5.7405507812e+01 S5
                      5.0000054687e+01 S6
                      2.3999984375e+02 S7
<<<<< Best objective function  =
                      8.0674284316e-01

答案1

Grep 是一个行选择工具。

grep ' S.$' your.txt 

将为您提供包含 7 个值的行。

如果需要修剪每行的值,可以使用 cut:

grep ' S.$' yout.txt |cut -d ' '  -f23

如果每行开头有 22 个空格,请使用 23。

AWK 将是 grep 和 cut 的一个很好的替代品。

答案2

如果我们可以确定我们想要的是第二个字段是 aS后跟数字的每一行的第一个字段,我们可以这样做:

$ awk '$2~/^S[0-9]$/{print $1}' data
3.3500000000e+02
1.0357218750e+00
7.2046250000e+01
7.2872921875e+01
5.7405507812e+01
5.0000054687e+01
2.3999984375e+02

如果您希望将它们作为数组中的值,请执行以下操作:

array=( $(awk '$2~/^S[0-9]$/{print $1}' data) )

如果您希望将它们放在新文件中,请执行以下操作:

awk '$2~/^S[0-9]$/{print $1}' data > new.data

相关内容