字符串排序问题

2017-05-15 21:09:21 +08:00
 artandlol

如何对以下字符串排序。

11  uid=984  op=85     get=25 
11  uid=544  get=26    op=85
12  op=55    uid=49    get=18
12  uid=002  get=20    op=99
12  op=34    get=678   uid=002

排成第一列不变,get 的值为第二列,uid 的值为第三列

1153 次点击
所在节点    问与答
3 条回复
geelaw
2017-05-15 21:32:08 +08:00
一次性处理的话,用

$1 get=$5$9$13 uid=$3$7$11 op=$4$8$12

替换

^\s*(\d+)\s+(uid=(\d+)|op=(\d+)|get=(\d+))\s+(uid=(\d+)|op=(\d+)|get=(\d+))\s+(uid=(\d+)|op=(\d+)|get=(\d+))\s*$

($ 是匿名捕获组,^$ 是行开头结尾而不是列开头结尾)

如果你的正则表达式引擎不支持大于 9 的匿名捕获组,使用不捕获组(这样恰好 9 个)或者使用命名捕获组。

更安全的方式是枚举 3! 种可能的排列写成正则表达式。
nutting
2017-05-15 21:32:37 +08:00
把值抽出来放数据库两列?
artandlol
2017-05-15 21:53:23 +08:00
@geelaw 谢谢
刚用 awk 解决了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX