删除两个字符串之间的任何回车/换行符

问题描述 投票:0回答:1

我正在执行放映时间脚本的最后一步,该脚本提取本地剧院信息并将其转换为干净的文本格式。我添加了一些“标志”,我想删除开始标志和结束标志之间可能存在的任何回车,并且很可能用空格替换它们。

电流输出:

|startStart| Sat Nov 11, 1:00 4:10 |endEnd|
|startStart| Sun Nov 12, 1:00 4:10 |endEnd|
|startStart| Mon Nov 13, 5:50 |endEnd|
|startStart| Tue Nov 14, 5:50 |endEnd|
|startStart| Wed
Nov 15, 5:50 |endEnd|

我不知道如何继续。我用谷歌找不到类似的问题。如果可能的话,我想使用 SED,因为这是脚本其余部分中使用的内容,也是我当前正在学习的程序。

我希望输出如下所示:

|startStart| Sat Nov 11, 1:00 4:10 |endEnd|
|startStart| Sun Nov 12, 1:00 4:10 |endEnd|
|startStart| Mon Nov 13, 5:50 |endEnd|
|startStart| Tue Nov 14, 5:50 |endEnd|
|startStart| Wed Nov 15, 5:50 |endEnd|

linux text sed
1个回答
0
投票

如果总是出现

|startStart|
后面跟着
|endEnd|
的情况,那么这应该有效:

sed '
    /|startStart|/ {
        :a
        /|endEnd|/! {
            N
            ba
        }
        s/\n/ /g
    }
' inputfile >outputfile
  • 当看到包含开始标记的行时:
    • 直到看到包含结束标记的行
      • 将下一行追加到模式空间
    • 删除所有换行符
© www.soinside.com 2019 - 2024. All rights reserved.