如何在比赛前grep第一场比赛?

时间:2019-11-27 23:07:45

标签: bash grep

我有一个文件,基本上我需要grep返回与特定值关联的“键”。

例如,如果我有:

[abc]
field1=34234
field2=t2342

[def]
field1=44354
field2=23423

我希望能够grep,例如23423,然后在[def]上进行基本匹配,然后返回/打印出括号中的内容(例如def)。

文件的格式是这样的,如果要这样做,我想在grep参数之前匹配包含[]的第一行 。 / p>

我发现this question与此类似,其中-B 1将为您提供前一行,并且可以使用其中的一些变体来防止比赛前出现一些行。

问题是我不能指望比赛和第一行之间有括号的确切行数,所以我想避免这样做,而只匹配包含括号的第一行。

>

这可能与grep或类似的bash实用程序有关吗?

1 个答案:

答案 0 :(得分:2)

我建议一遍阅读这些段落,一旦一个段落包含一个搜索值,请获取没有[]的第一字段:

awk -v RS= '/23423/{gsub(/[][]/, "", $1); print $1}' file

请注意,[][][]匹配。

或者,获取第一个字段,其中包含[]修剪的内容:

awk -v RS= '/23423/{print substr($1, 2, length($1)-2)}' file

请参见online awk demo

相关问题