如何逗号后),(
插入新行字符使用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