我想在模式后用空格替换换行符。
例如我的文字是:
1.
好电影
(2006)
这是一部世界级的音乐电影
迪尔:
abc
用:
兰
,
cer
,
cro
喜剧
|
戏剧
|
家庭
|
音乐作品
|
浪漫志
120分钟
53097
我希望上面的文字成为这样的东西
1.好电影(2006)
这是一部音乐剧。
导演:abc
用:lan,cer,cro
喜剧|戏剧|家庭|音乐|浪漫时刻120分钟
答案 0 :(得分:1)
问题更新后,解决方案的要求发生了变化:
Checked=true
输出:
cat test.txt | tr '\n' ' ' | perl -ne 's/(?<!\|) ([A-Z])/\n\1/g; print' | sed 's/ ,/,/g' | sed 's/ \([0-9]\+\)/\n\1/g'; echo
说明:
1. good movie (2006)
This is a world class movie for music.
Dir: abc
With: lan, cer, cro
Comedy | Drama | Family | Musical | Romance
120 mins.
替换所有换行符。最后的tr
是添加“换行符”&#39;到输出。
<强>推荐使用:强>
基于kpie的评论,我建议您使用以下解决方案:
echo
我将您的输入粘贴到test.txt中
第一个cat test.txt | sed ':a;N;$!ba;s/\n//g' | sed 's/\([A-Z]\)/\n\1/g'
替换在此解释:https://stackoverflow.com/a/1252191/1863086
第二个用前一个换行符替换每个大写字母。
编辑:
使用sed
的另一种可能性:
tr