0

我需要在 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

模式是“欧洲”

4

3 回答 3

1
perl -i -0777pe's/\n(?!Europe|\z)/ /g' file
于 2012-09-07T14:27:14.997 回答
0

只需chomp每一行和print它,如果它以模式开头,则在它前面加上一个额外的换行符

perl -ne 'chomp; print "\n"  if /^Europe/; print' myfile
于 2012-09-07T14:30:36.847 回答
0

这可能对您有用(GNU sed):

sed ':a;$!N;/\nEurope/!s/\n//;ta;P;D' file
于 2012-09-07T21:33:37.110 回答