
我希望这些项目能够在其中包含将被转义的空格.所以:
abc def\ ghi jkl abc
由4个项目组成,abc,def ghi,jkl和abc.
如果我的一套正则表达式是
bk$^g
输出应该是
abc abc
似乎grep -f可以让我在那里大部分时间,但我必须处理一个处理转义空间的方法,所以我不能只是从空间到换行符.
编辑:我想我可以使用sed做一个转义空间感知的常规空格替换到换行符.在从换行符回来的路上,tr就足够了.想知道是否有人有更好的想法.
解决方法 我真的不明白你的物品是如何给出的.假装它们来自程序之谜的输出,在一行中,例如,
gnIoUrf@somewhere$mysteryabc def\ ghi jkl abc
你可以(文件myscript):
#!/bin/bashoutput=()re=( 'b' 'k$' '^g' ) # array of your regexesread -a afor w in "${a[@]}"; do for r in "${re[@]}"; do if [[ $w =~ $r ]]; then output+=( "${w// /\ }" ) # replace space with backslash-space break fi donedoneecho "${output[@]}" 出于测试目的,我做了这个:
#!/bin/bash# file mysteryecho 'abc def\ ghi jkl abc'
然后(在chmod x之后神秘的myscript):
gnIoUrf@somewhere$./mysteryabc def\ ghi jkl abcgnIoUrf@somewhere$./mystery | ./myscriptabc abc
警告.这迟早会破裂,除非神秘总是输出不错的东西!
总结以上是内存溢出为你收集整理的linux – bash(可以使用perl / python):通过正则表达式过滤空格分隔的arg列表全部内容,希望文章能够帮你解决linux – bash(可以使用perl / python):通过正则表达式过滤空格分隔的arg列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)