grep 查找文件中的数组条目

grep 查找文件中的数组条目

所以我有一个文件 step1 包含类似数据

field [T]:0.000
heatstart [s]: 1.50E+1
a[a],b[b],[c[c],d
1.02E-1,2.31E-1,...
1.50E+1,4.26E-1,...
...

以及一个名为 var4 的文件,其中仅包含条目1.50E+1。我使用 mapfile 将此条目作为变量获取

mapfile -t var<var4

grep 可以用来搜索数据并给出行号

grep -n "${var[0]}" step1

使用这个只会给我步骤 1 第 2 行中的条目,而不是第 5 行中的条目。如果我将第 5 行中的条目复制到开头的另一行,我也无法使用 grep 获取它,但如果我将其复制到行中间的某个位置,grep 就会获取它。但如果我将文件步骤 1 粘贴到其自身,则不会获得其他结果。

我还尝试使用 sed 和 cut 获取 1.50E+1 的变量

sed -n '2p' < step1>var3
var4="$(cut -c15- var3)"

但这会导致同样的问题。变量中的数字前面没有空格,因为即使我删掉很多,以至于 1 不再存在于变量中,我也无法获得所有结果。有人知道为什么会发生这种情况或如何解决这个问题吗?

答案1

我认为您将会有很多 stepN 和 varN 文件?

我会像您一样使用 grep 的 -f 选项和 -n。

grep -n -f var4 step4

输出:

mdiehn@frank ~ $ grep !*
grep -n -f var4 step4
1:tstart [s]: 1.50E+1
4:1.50E+1,4.26E-1,...

如果您不想要 tstart,可以使用“grep -v”将其消除,或者我们可以进入一些更有趣的 awk 脚本。

相关内容