gpt4 book ai didi

regex - 如何使用grep提取多个组

转载 作者:行者123 更新时间:2023-12-04 23:00:31 24 4
gpt4 key购买 nike

假设我有这个文件 data.txt :

a=0,b=3,c=5
a=2,b=0,c=4
a=3,b=6,c=7

我想用 grep提取与 a 的值对应的 2 列和 c :
0 5
2 4
3 7

我知道如何分别提取每一列:
grep -oP 'a=\K([0-9]+)' data.txt
0
2
3

和:
grep -oP 'c=\K([0-9]+)' data.txt
5
4
7

但我不知道如何提取这两组。我尝试了以下方法,但没有用:
grep -oP 'a=\K([0-9]+),.+c=\K([0-9]+)' data.txt
5
4
7

最佳答案

我也好奇grep能够这样做。 \K “删除”存储的先前内容,因此您不能在同一个表达式中使用它两次:它只会显示最后一组。因此,它应该以不同的方式进行。

同时,我会使用 sed :

sed -r 's/^a=([0-9]+).*c=([0-9]+)$/\1 \2/' file

它捕获 a= 之后的数字和 c= , 每当这种情况发生在以 a= 开头的行上时并且在 c=digits 之后不包含任何其他内容.

对于您的输入,它返回:
0 5
2 4
3 7

关于regex - 如何使用grep提取多个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26382311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com