从文件中删除换行不起作用
Removing line feeds from file is not working
我尝试使用 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\)/:/g'
代码没有任何改变。
事实上,即使我删除了模式并寻找 \n 它仍然不起作用
这似乎适用于所有行:
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
操作是基于行的。在模式 space 中,您可以删除新行。
在多行上下文中使用perl(类似于自然):
perl -0 -pe 's/(\s+SourceField:\s+LOAN-NO)\n\s+/:/' file
\s+
是空格(或空格)。是不是清晰易读的代码?
-0
使 Perl 在 单个字符串变量 中吞噬整个文件
Format: 0000000
InputMask: &&&&&&&
OrdinalPosition: 0
Required: True
SourceField: LOAN-NO:SourceTable: MASTER
我尝试使用 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\)/:/g'
代码没有任何改变。 事实上,即使我删除了模式并寻找 \n 它仍然不起作用
这似乎适用于所有行:
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
操作是基于行的。在模式 space 中,您可以删除新行。
在多行上下文中使用perl(类似于自然):
perl -0 -pe 's/(\s+SourceField:\s+LOAN-NO)\n\s+/:/' file
\s+
是空格(或空格)。是不是清晰易读的代码?-0
使 Perl 在 单个字符串变量 中吞噬整个文件
Format: 0000000
InputMask: &&&&&&&
OrdinalPosition: 0
Required: True
SourceField: LOAN-NO:SourceTable: MASTER