我試圖做一些比較簡單的,但我不知道該怎麼做之間的行尾。擊:使用SED更換子
我有一個MAC地址如下:
xx:yy:yy:zz:yy:yy
我想修改:YY:在字符串的結尾,使之成爲:01: 使用上面的例子中,就變成:
xx:yy:yy:zz:01:yy
基本上是最後一個字符::在字符串中。
我嘗試以下,但它不工作:
echo "$var" | sed 's/:*:*$/:01:/'
我知道這是一個簡單的問題,但任何幫助,將不勝感激請。
我試圖做一些比較簡單的,但我不知道該怎麼做之間的行尾。擊:使用SED更換子
我有一個MAC地址如下:
xx:yy:yy:zz:yy:yy
我想修改:YY:在字符串的結尾,使之成爲:01: 使用上面的例子中,就變成:
xx:yy:yy:zz:01:yy
基本上是最後一個字符::在字符串中。
我嘗試以下,但它不工作:
echo "$var" | sed 's/:*:*$/:01:/'
我知道這是一個簡單的問題,但任何幫助,將不勝感激請。
AWK是比較容易解決這樣的問題:
awk -F: -v OFS=":" '$5="01"'
例如:
kent$ echo "xx:yy:yy:zz:yy:yy"|awk -F: -v OFS=":" '$5="01"'
xx:yy:yy:zz:01:yy
真棒,這是非常容易得多,非常感謝你! – user1777907 2013-05-13 22:33:47
+1用於暗示非sed解決方案。 – 2013-05-13 23:06:14
這隻適用於確實有5個':'s – user123444555621 2013-05-14 06:21:36
假設你有最後的後兩個字符:,答案是:
echo xx:yy:yy:zz:yy:yy | sed 's/\(.*:\).*\(:..\)$/\101\2/'
如果你覺得我的假設是錯誤的,我可以改善它。
非常感謝你,這是完美的! – user1777907 2013-05-13 22:32:27
改進:'sed的-r 'S /:[^:] +([^:] *)$ /:01:\ 1 /'' – user123444555621 2013-05-14 06:18:48
'*'是一個glob模式。你想要的正則表達式相當於'。*' – jthill 2013-05-13 22:20:57