我有一组正则表达式,应该针对空格分隔列表中的每个项目进行测试。
我希望这些项目能够在其中包含将被转义的空格。所以:
abc def\ ghi jkl abc
由 4 项组成,abc
、def ghi
、jkl
和 abc
。
如果我的正则表达式集是
b
k$
^g
输出应该是
abc abc
似乎 grep -f
可以让我完成大部分工作,但我必须处理一种处理转义空格的方法,所以我不能只执行 tr
从空格到换行符。
编辑:我认为我可以只使用 sed
将常规空格替换为换行符的转义空间感知。 tr
在从换行符返回的路上就足够了。想知道是否有人有更好的想法。
最佳答案
我认为它可以在 bash 本身中处理而无需任何外部实用程序。
首先把你的字符串放在一个数组中:
input=(abc 'def ghi' jkl abc)
然后运行此 for 循环以根据提供的正则表达式验证您的输入:
for i in "${input[@]}"; do
for r in 'b' 'k$' '^g'; do
[[ "$i" =~ $r ]] && echo $i && break
done
done
输出:
abc
abc
关于linux - bash(可能可以使用 perl/python): filter space delimited arg list through regexes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253294/