linux - bash(可能可以使用 perl/python): filter space delimited arg list through regexes

标签 linux bash unix

我有一组正则表达式,应该针对空格分隔列表中的每个项目进行测试。

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

abc def\ ghi jkl abc

由 4 项组成,abcdef ghijklabc

如果我的正则表达式集是

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/

相关文章:

windows - 好奇执行二进制

linux - 将除五个最新文件之外的所有文件移至新目录

linux - 如何使用 bash 从大文件中提取所有以特定字符开头的单词?

android读取短信收件箱消息

linux - 打包 Perl Mojolicious 网络应用程序

mysql - 使用 bash 从文件中插入和编辑 mysql 行

linux - 将 wget 与 OpenID 登录结合使用

linux - 将输出同时重定向到控制台和文件的命令在 bash 中运行良好。但我如何让它在 korn shell(ksh) 中工作

ios - 使用 bash 获取哈希值

linux - 如果文件名不正确,则将其移至错误文件夹