如何在模式匹配前输入4个空白行?
我能做到
sed '/patterntosearch4/G' 1.txt > 2.txt
创建一个新文件(2.txt),每个模式后面都有一个空行。
但是如何在比赛前输入4个空行?
Manpage SED似乎没有提供任何答案。
非常感谢任何帮助!!
答案 0 :(得分:5)
这可能适合你(GNU sed):
sed '/patterntosearch4/i\\n\n\n' file
或者如果您愿意:
sed -e '/patterntosearch4/!b' -e 'G' -e 's/\(.*\)\(.\)/\2\2\2\2\1/' file
BTW当你使用G
命令,它在模式匹配的行后面插入换行符时,我猜你想在模式匹配的行之前插入换行符。
答案 1 :(得分:5)
在着名的sed单行博客(http://www.catonmat.net/blog/wp-content/uploads/2008/09/sed1line.txt)
中# insert a blank line above every line which matches "regex"
sed '/regex/{x;p;x;}'
所以在你的情况下,
sed '/atterntosearch4/{x;p;p;p;p;x}' file
或
sed '/atterntosearch4/{x;P;P;P;P;x}' file
答案 2 :(得分:3)
sed的替代方案,没有替换(s/../../
):
sed '/pat/{x;p;p;p;p;x}'
试验:
kent$ (master|✔) seq 5|sed '/3/{x;p;p;p;p;x}'
1
2
3
4
5
答案 3 :(得分:1)
使用gnu-sed你可以这样做:
sed -i.bak 's/pattern/\n\n\n\n&/' file
答案 4 :(得分:0)
还有很多方法,但在这里你有一个非常简单的方法:
sed 's/patterntosearch4/\n\n\n\n&/' 1.txt > 2.txt