如何逗號後),(
插入新行字符使用sed?在'逗號後如何插入換行符),(`使用sed?
$ more temp.txt
(foo),(bar)
(foobar),(foofoobar)
$ sed 's/),(/),\n(/g' temp.txt
(foo),n(bar)
(foobar),n(foofoobar)
爲什麼這不工作?
如何逗號後),(
插入新行字符使用sed?在'逗號後如何插入換行符),(`使用sed?
$ more temp.txt
(foo),(bar)
(foobar),(foofoobar)
$ sed 's/),(/),\n(/g' temp.txt
(foo),n(bar)
(foobar),n(foofoobar)
爲什麼這不工作?
sed
不支持其substitu的\n
轉義序列重刑命令,但是,它支持一個真正的換行符,如果你逃避它(因爲sed
命令應該只使用一個單一的線,逃避這裏告訴sed
,你真的想要一個換行符):
$ sed 's/),(/),\\
(/g' temp.txt
(foo),
(bar)
(foobar),
(foofoobar)
您也可以使用shell變量來存儲換行符。
$ NL='
'
$ sed "s/),(/,\\$NL(/g" temp.txt
(foo),
(bar)
(foobar),
(foofoobar)
測試在Mac OS X Lion中,使用bash
爲殼。
在第一種方法中,爲什麼它需要'\\'而不是'\'? – qazwsx 2012-02-27 22:41:52
您傳遞給'sed'的命令不應包含換行符。所以如果你想傳遞一個換行符,你需要用一個反斜槓來轉義它,這樣'sed'知道你是故意的。你需要第二個反斜槓來保護第一個被shell解釋(使用反斜槓來轉義正則表達式中的字符是恕我直言,因爲它通常也用於引用字符串中的字符,因此通常必須使用雙反斜槓在正則表達式中)。 – 2012-02-28 09:29:58
你使用的是什麼平臺和版本的sed? – potong 2012-02-27 23:12:21