【问题标题】:Removing line feeds from file is not working从文件中删除换行符不起作用
【发布时间】:2020-10-28 07:09:34
【问题描述】:

我尝试使用 sed 从包含模式的行中删除换行符。 我的台词是:

              Format:                    0000000
              InputMask:                 &&&&&&&
              OrdinalPosition:           0

              Required:                  True
              SourceField:               LOAN-NO
              SourceTable:               MASTER

我希望它看起来像这样:

              Format:                    0000000
              InputMask:                 &&&&&&&
              OrdinalPosition:           0

              Required:                  True
              SourceField:               LOAN-NO:SourceTable:               MASTER

我的代码是:

cat file.txt | sed 's/\(*.SourceField.*\)\(\n\)/\1:/g'

代码不会改变任何东西。 事实上,即使我删除了模式并寻找 \n 它仍然不起作用

这似乎适用于所有行:

cat file.txt | sed ':a;N;$!ba;s/\n//g' 

但我不能让它仅适用于包含 SourceField 的行。

我想了解为什么第一行不起作用,以及如何调整第二行以仅使用包含该模式的行。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: sed lf


    【解决方案1】:
    $ sed -E '/SourceField:/{N;s/\n */:/;}' file
    
                  Format:                    0000000
                  InputMask:                 &&&&&&&
                  OrdinalPosition:           0
    
                  Required:                  True
                  SourceField:               LOAN-NO:SourceTable:               MASTER
    

    您的第一个脚本将无法运行,因为sed 操作是基于行的。在模式空间中,您可以删除新行。

    【讨论】:

    • 效果很好。谢谢!
    【解决方案2】:

    在多行上下文中使用(一种自然):

    perl -0 -pe 's/(\s+SourceField:\s+LOAN-NO)\n\s+/$1:/' file
    
    • \s+ 是空格(或空白)。代码不是清晰易读吗?
    • -0 使 Perl 将整个文件放入一个单个字符串变量

              Format:                    0000000
              InputMask:                 &&&&&&&
              OrdinalPosition:           0
    
              Required:                  True
              SourceField:               LOAN-NO:SourceTable:               MASTER
    

    【讨论】:

      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多