我想插入并有“|”后面用一个空行代替。
inp.txt
abcd |
efgh |
ijkl |
out.txt
abcd
efgh
ijkl
这是在unix上的。每次我尝试过
sed -i.bak 's/|/\n/g' inp.txt
它返回的只是
abcd n
efgh n
ijkl n
答案1
\n
您可以添加反斜杠\
,然后按Enter并继续使用以下命令,而不是使用:
sed -i.bak 's/|/\
/g' inp.txt
|
要替换行末尾的剩余空格字符( $
),请使用
sed -i.bak 's/ |$/\
/' inp.txt
您不需要g
更换一个标志。
答案2
如果管道字符始终位于行尾,那么您可以这样做:
$ sed -i.bak -e '/[|]$/G' -e 's///' inp.txt
否则,如果情况并非如此和/或一行中有一个或多个管道,则执行以下操作:
$ sed -i.bak -e 'y/|/\n/' file.txt
它将把一行中任意位置的所有管道字符转换为换行符。