我有一组正则表达式,应该根据空格分隔列表中的每个项目测试一组正则表达式。bash(潜在地可以使用perl/python):通过正则表达式过滤空格分隔的arg列表
我希望这些物品能够在其中有空间,这些物品将被转义。所以:
abc def\ ghi jkl abc
包括4个项目,abc
,def ghi
,jkl
和abc
。
如果我的设置正则表达式的是
b
k$
^g
输出应该是
abc abc
好像grep -f
可以让我最那里的方式,但我必须处理的方式来处理逃脱的空间,所以我不能只是从空间到换行做一个tr
。
编辑:我想我可以使用sed
做一个逃脱空间意识到替换正常空间换行。从换行符开始,tr
就足够了。想知道是否有人有更好的想法。
如何你的物品是给定的?他们是在一个字符串,一个数组,用户给出,从一个文件中取出......? –
你可以这样做的一种方式是用非可分隔的空格(UTF-8字符)替换所有的空格,这样它们就不会匹配空格正则表达式。一旦你结束了,用一个固定的空间替换不可拆分的空间。有点骇人听闻,但可能是一个简单的方法来解决。 – zmo
它来自STDIN。从一个程序中(从管道) –