如何使用 sed 在文本文件中的特定字符后添加空行?

如何使用 sed 在文本文件中的特定字符后添加空行?

我想插入并有“|”后面用一个空行代替。

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

它将把一行中任意位置的所有管道字符转换为换行符。

相关内容