从文件中删除换行符无效



我试图使用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'

代码不会更改任何内容。事实上,即使当我删除模式并寻找它时,仍然不起作用

这似乎适用于所有线路:

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

但我无法使它仅适用于包含SourceField的行。

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

如有任何帮助,我们将不胜感激。

谢谢!

$ sed -E '/SourceField:/{N;s/n */:/;}' file
Format:                    0000000
InputMask:                 &&&&&&&
OrdinalPosition:           0
Required:                  True
SourceField:               LOAN-NO:SourceTable:               MASTER

您的第一个脚本不起作用,因为sed操作是基于行的。在填充图案空间中,可以删除新行。

多行上下文中使用perl(有点像自然(:

perl -0 -pe 's/(s+SourceField:s+LOAN-NO)ns+/$1:/' file
  • s+是空格(或空格(。这不是一个清晰可读的代码吗
  • -0使Perl在单个字符串变量中诋毁整个文件

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

相关内容

  • 没有找到相关文章

最新更新