仅在模式之前留下新行

时间:2012-09-07 14:19:59

标签: perl shell sed

我需要在shell中重新格式化文件,所以我只留下新行'在一些模式之前。例如:

输入:

Europe First
Asia Second
Africa Third
Australia Fourth
Europe Sixth
Australia Seventh
Europe  Eight
America Last

输出:

Europe FirstAsia SecondAfrica ThirdAustralia Fourth
Europe SixthAustralia Seventh
Europe  EightAmerica Last

模式是"欧洲"

3 个答案:

答案 0 :(得分:1)

perl -i -0777pe's/\n(?!Europe|\z)/ /g' file

答案 1 :(得分:0)

只需chomp每一行print,如果它以模式开头,则在其前面添加一个新行

perl -ne 'chomp; print "\n"  if /^Europe/; print' myfile

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed ':a;$!N;/\nEurope/!s/\n//;ta;P;D' file