【发布时间】:2016-10-29 16:26:07
【问题描述】:
我正在尝试组合一个正则表达式,它将找到具有以下格式的子字符串:
- [a-z].*(“x”小写字母个数)
- '-' 符号 [a-z].*
- ('x' 小写字母的个数 [0-9].*
- ('x' 个数字从 0 到 9)
该子字符串后面的行中的任何其他内容(包括空格或',')都不会被正则表达式捕获,然后我会在结果中添加一个新行,以便它们在列表中。
如果这个正则表达式按照我想要的方式工作,那么从下面的字符串中
file.txt: hostname abcd-efg123, zfdh-eif23 , reox-bmo552, 'coor-dto201',
我会收到这个输出
abcd-efg123
zfdh-eif23
reox-bmo552
coor-dto201
这是我目前所拥有的。我正在尝试使用正则表达式,然后将结果存储为两个变量,然后我可以将它们放回 sed。我没有得到预期的结果。
我使用的正则表达式/sed 是
sed 's/\([a-z].*\)-\([a-z].*[0-9].*\)/\2 \1 \n/g'
这是直接来自提示符的命令
macbook:~ user$ echo "file.txt: hostname abcd-efg123, zfdh-eif23 , reox-bmo552, 'coor-dto201'," | sed 's/\([a-z].*\)-\([a-z].*[0-9].*\)/\2 \1 \n/g'
dto201', file.txt: hostname abcd-efg123, zfdh-eif23 , reox-bmo552, 'coor n
【问题讨论】:
-
[a-z].*并不意味着“任意数量的小写字母”:它的意思是“一个小写字母,后跟任意数量的字符”。任何*量词适用于前一个标记.,这是正则表达式的“小丑”,它将匹配任何字符。
标签: regex sed regex-greedy