gpt4 book ai didi

正则表达式一个参数数目未知的字符串

转载 作者:行者123 更新时间:2023-12-04 12:18:30 26 4
gpt4 key购买 nike

假设我在这种格式的文本文件中有数百万个字符串:

st=expand&c=22&t=button&k=fun HTTP

这是一个字符串,我们可以将其视为带有键 st 的散列。 , c , tk .文本文件中的某些字符串可能没有给定的 &KEY=VALUE 存在,因此可能如下所示:
st=expand&k=fun HTTP

如何使用 sed 将字符串更改为以下
expand,,,fun

也就是说,即使认为 key=value 不存在,我们仍然添加一个逗号。我们可以假设我们有一个固定的 key 集 [st,c,t,k] .

我尝试过的是(只是一个想法!!)
sed 's/\(st=\|c=\|t=\|k=\)\([\(^\&\|HTTP\)])\(\&\|HTTP\)/\3,/g' big_file

但显然,如果 c不存在,它没有添加逗号,因为它没有找到。任何想法如何解决这个问题?使用 awk也可能是可以接受的(或任何其他快速文本处理实用程序)

谢谢!

输入数据示例
st=expand&c=22&t=button&k=fun HTTP
c=22&t=button&k=fun HTTP
st=expand&c=22&t=party&k=fun HTTP
st=expand&c=22&k=fun HTTP
st=expand HTTP
HTTP

输出数据
expand,22,button,fun
,22,button,fun
expand,22,party,fun
expand,22,,fun
expand,,,
,,,

最佳答案

你可以用这个sed :

sed -E 's/(st=([^& ]*)|)(.*c=([^& ]*)|)(.*t=([^& ]*)|)(.*k=([^& ]*)|) HTTP/\2,\4,\6,\8/' file

expand,22,button,fun
,22,button,fun
expand,22,party,fun
expand,22,,fun
expand,,,
,,,

Sed Demo

RegEx Demo

关于正则表达式一个参数数目未知的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798566/

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