我有格式的行編輯以逗號分隔的路徑,大小對列表
parts=/a,1mb,/b/c,2gb,/zee/last,-1 #general form on next line
parts=path1,size1,...,lastPath,-1
我想newPath,newSize
,使它看起來像
parts=newPathX,newSizeX,lastPath,-1
全部更換
path1,size1
除了
lastplace,-1
我想如何使用至少有一個實例的','char如下
sed 's|^parts=.*,\(.*,-1\)$|parts=newPathX,newSizeX,\1|gi'
但是,如果列表只有最後一個路徑和大小,就會中斷。例如,我想
parts=lastPath,-1
被轉化爲
parts=newPathX,newSize,lastPath,-1
所以,我想在bash與條件來解決這個問題:
egrep -i '^parts=.*,.*,-1$' $file
if [[ $? -eq 0 ]] ; then
sed 's|^parts=.*,\(.*,-1\)$|parts='$new',\1|gi' $inp
else
sed -i -e 's|^parts=|parts='$new',_gi' $file
fi
我想知道一個純粹的sed解決方案,因爲我可以很快理解它,但awk也會這樣做。
我試圖修復格式,但很快放棄:(。@有些n00b - 請格式化您的代碼,所以我們不需要僱用codebreakers – 2010-09-28 05:49:49
puthere_new =/a,1kb ,/ b,2mb,/ c,-1會變成什麼時候newplace是/ dd,大小是/ 2gb? – Gadolin 2010-09-28 05:51:09
我應該快速粘貼我的bash作爲答案嗎?雖然我仍然想要一個組合的'正則表達式魔法'來解決這一個?? – Prince 2010-09-28 05:54:49