我对 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