linux – bash(可以使用perlpython):通过正则表达式过滤空格分隔的arg列表

linux – bash(可以使用perlpython):通过正则表达式过滤空格分隔的arg列表,第1张

概述我有一组正则表达式,应该针对空格分隔列表中的每个项目进行测试. 我希望这些项目能够在其中包含将被转义的空格.所以: abc def\ ghi jkl abc 由4个项目组成,abc,def ghi,jkl和abc. 如果我的一套正则表达式是 bk$^g 输出应该是 abc abc 似乎grep -f可以让我在那里大部分时间,但我必须处理一个处理转义空间的方法,所以我不能只是从空间到换行符. 编 我有一组正则表达式,应该针对空格分隔列表中的每个项目进行测试.

我希望这些项目能够在其中包含将被转义的空格.所以:

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列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1017897.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存