如何找到多个匹配项并在连续两行中显示匹配项的值?

问题描述 投票:0回答:1

我有一个带有以下几行的文件

key1=value1 AND key2=value2 followed by some other text
key3 {value3} some text key4 - value4 and key5 - value5

是否可以提取值1,3、4和5并打印?请注意,仅在连续两行都包含所有匹配项的情况下考虑匹配项。如果这样更容易,我就会知道我要寻找的键。

输出(或类似的东西)

key1 = value1, key3=value3, key4 = value4, key5 = value5

更新-

abc = 12ty3 AND jfk = 345 followed by some other text
klm {678er} some text plr - 567 and deg - 345

输出

abc = 12ty3, klm = 678er, plr = 567 , deg = 345
bash awk sed grep
1个回答
0
投票

我将使用grep -o提取每个事件在其自己的行上,sed重新格式化需要的行,并使用paste将它们重新合并到一行中:

grep -Eo '\w+=\w+|\w+\s+\{[^}]+\}|\w+\s+-\s+\w+' | sed -E 's/-/=/;s/\{([^}]+)}/= \1/' | paste -sd ','

您可以try it here

© www.soinside.com 2019 - 2024. All rights reserved.