我正在尝试从用户那里获取路径作为输入。
用户将为特定应用输入特定路径:
script.sh /var/log/dbhome_1/md5
我想将目录数(在这种情况下为 1)转换为 *(星号)。稍后,脚本将在此路径上执行一些逻辑。
当我在输入上尝试 sed 时,我被数字卡住了 -
echo "/var/log/dbhome_1/md5" | sed "s/dbhome_*/dbhome_\*/g"
并且输入将是 -
/var/log/dbhome_*1/md5
我知道我在使用星号通配符和作为字符时遇到了一些问题... 也许正则表达式会在这里有所帮助?
最佳答案
GNU sed 代码:
sed "s#1/#\*/#"
.
$echo "/var/log/dbhome_1/md5" | sed "s#1/#\*/#"
"/var/log/dbhome_*/md5"
或者更一般的:
sed "s#[0-9]\+/#\*/#"
.
$echo "/var/log/dbhome_1234567890/md5" | sed "s#[0-9]\+/#\*/#"
"/var/log/dbhome_*/md5"
关于regex - 将字符串替换为星号 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17394181/