2017-06-07 40 views
0

我需要编写bash脚本,将只有整数“intString”的字符串转换为:id。 intString始终存在于/之后,可能永远不会包含任何其他类型(create_step2不是有效的intString),并且可能会在第二个/或行尾结束。 intString可以是任何1-8个字符。脚本需要重复给定文件中的每一行。如何在bash中用另一个给定的字符串递归地替换部分字符串?

例如: /sample/123456/url应转换为/sample/:id/url/sample_url/9应转换为然而/sampleurl/:id/sample_url_2/应保持不变。

任何帮助,将不胜感激!

+0

如果你不打算展示你的工作到目前为止,只是问是否有人可以为你写,请做我们的解释你的项目礼貌或理由为什么我们应该帮助你在你的comp-sci课程中作弊。 –

回答

0

这似乎是围绕着递归问题的漫长过程,但我不知道你正在解决什么问题。看起来像

sed -E 's/\/[0-9]{1,}/\/:id/g' 

能做到这一点的一个镜头一个很好的sed命令,但如果你坚持是递归的,那么它可能去这样的事情...

#!/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 “/富/ 123 /酒吧/ 456 /巴兹/ 45435/andstuff”

/富/:ID /棒/:ID /巴兹/:ID/andstuff

相关问题