希望有一个通用的实用程序,用于根据命令行参数按需创建regexp模式。
以下脚本仅用于演示拆分和转换的方法。它不是如何使用的最终产品。注意:是的,我确实打算在sed中使用[alphanum],而不是**[alpha]]**。
我的问题是命令的脚本输出(包括在下面)
scriptname abc
是
[Aa][BCbc]
当我想要的时候
[Aa][Bb][Cc]
我正在寻找正确的sed语法来指导命令分别重复替换每个字符,而不仅仅是第一个字符。
脚本:
#!/bin/bash
makePatternMatch()
{
echo "${charList}" | awk 'BEGIN{
regExp="" ;
}
{
if( $0 != "" ){
for( i=1 ; i <= NF ; i++ ){
regExp=sprintf("%s[%s%s]", regExp, toupper($i), tolower($i) ) ;
} ;
} ;
}END{
printf("%s\n", regExp ) ;
}'
}
explodeString()
{
charList=$(echo "${pattern}" | sed 's+[[alphanum]]*+&\ +g' )
}
for pattern in $@
do
explodeString
makePatternMatch
done
2条答案
按热度按时间siotufzp1#
这可能对您有用(GNU sed):
如果字符是字母或数字,则将其替换为
[x]
,其中x是数字或大小写字母。备选方案:
但是,这会使每个数字加倍(无效果)。
4uqofj5v2#
结合每个回复者的输入,我能够制定出我正在寻找的基于**sed的一行程序**命令。
给我
但是回到OP中的脚本,修改后的逻辑应该是:
再次感谢所有提供各种例子和见解的人!