2017-06-07 81 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

相關問題