请教一个 Bash Shell 中的正则分组问题

2020-09-20 21:16:20 +08:00
 huyinjie

想要提取字段 256x144 中的 256 和 144,再存入数组中
使用 echo 256x144 | egrep "(\d{3,4})x(\d{3,4})\1" 没什么效果 求助各位

667 次点击
所在节点    问与答
5 条回复
napsterwu
2020-09-20 21:30:32 +08:00
我个人觉得 egrep 没有办法随心所欲的操作,这个需求的话我会用 cut + awk 解决
ETiV
2020-09-20 22:39:05 +08:00
echo 256x144 | awk -Fx '{print $1,$2}' | read width height

读进变量不行吗?
aheadlead
2020-09-20 22:56:45 +08:00
建议使用 @ETiV 的方法。。

一定要用 bash 的话,也可以这么写:

input="256x144"; [[ ${input} =~ ([0-9]+)x([0-9]+) ]] && { x=${BASH_REMATCH[1]}; y=${BASH_REMATCH[2]} ; } ; echo $x,$y

(不过这是何必呢…
aheadlead
2020-09-20 22:58:03 +08:00
哎… 我干啥啥不行,咋写 bash 倒挺会…
(奇怪的技能增加了
huyinjie
2020-09-21 13:55:55 +08:00
@ETiV 感谢 就是想这样 awk 好方便
@aheadlead 好吧 表述有问题 还以为 grep awk 也在 bash shell 的范畴 我的锅

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

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

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

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

© 2021 V2EX