我需要编写bash脚本,将只有整数“intString”的字符串转换为:id
。 intString始终存在于/
之后,可能永远不会包含任何其他类型(create_step2
不是有效的intString),并且可能以第二个/
或行尾结束。 intString可以是任何1-8个字符。需要为给定文件中的每一行重复脚本。
例如:
/sample/123456/url
应转换为/sample/:id/url
并且/sample_url/9
应转换为/sampleurl/:id
,但/sample_url_2/
应保持不变。
任何帮助将不胜感激!
答案 0 :(得分:0)
看起来问题还有很长的路要走,但是我不知道你在解决什么问题。它似乎是一个很好的sed命令,如
sed -E 's/\/[0-9]{1,}/\/:id/g'
可以一次性做到这一点,但如果你坚持递归那么它可能就是这样......
#!/bin/bash
function restring()
{
s="$1"
s="$(echo $s | sed -E 's/\/[0-9]{1,}/\/:id/')"
if ( echo $s | grep -E '\/[0-9]{1,}' > /dev/null ) ; then
restring $s
else
echo $s
exit
fi
echo $s
}
restring "$1"
现在运行它
$ ./restring.sh" / foo / 123 / bar / 456 / baz / 45435 / andstuff"
/富/:ID /棒/:ID /巴兹/:ID / andstuff