加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式具有未知数量参数的字符串

发布时间:2020-12-14 06:23:20 所属栏目:百科 来源:网络整理
导读:假设我在这种格式的文本文件中有数百万个字符串: st=expandc=22t=buttonk=fun HTTP 这是一个字符串,我们可以看作是带有键st,c,t和k的哈希.文本文件中的某些字符串可能没有给定的 KEY = VALUE,因此可能如下所示: st=expandk=fun HTTP 如何使用sed将字符串更
假设我在这种格式的文本文件中有数百万个字符串:
st=expand&c=22&t=button&k=fun HTTP

这是一个字符串,我们可以看作是带有键st,c,t和k的哈希.文本文件中的某些字符串可能没有给定的& KEY = VALUE,因此可能如下所示:

st=expand&k=fun HTTP

如何使用sed将字符串更改为以下内容

expand,fun

也就是说,即使认为key = value不存在,我们仍然添加一个逗号.我们可以假设我们有一个固定的密钥集[st,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,fun
expand,party,
你可以使用这个sed:
sed -E 's/(st=([^& ]*)|)(.*c=([^& ]*)|)(.*t=([^& ]*)|)(.*k=([^& ]*)|) HTTP/2,4,6,8/' file

expand,

Sed Demo

RegEx Demo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读