仅替换组合符号点 + 换行符
replacing only combination symbols dot + newline
如何使用 sed
或 tr
更正仅替换组合点和换行符 (.\n
)
tr -d '.\n'
删除所有找到的点和换行符,但我只需要 remove/replace 组合
sed 's/\.\n//g'
- 不要替换任何东西
非常感谢
您可以这样使用 gnu sed
:
s='Hello Mr. Foo.
- How are you?
Life is good.'
sed -E '/\.$/{:a;N;s/\.\n//;ta}' <<< "$s"
Hello Mr. Foo - How are you?
Life is good.
其他选项是使用 awk
:
awk -v RS= '{gsub(/\.\n/, "")} 1' <<< "$s"
Hello Mr. Foo - How are you?
Life is good.
Perl 来拯救:
perl -pe 's/\.\n//' < file.old > file.new
这可能适合您 (GNU sed):
sed ':a;N;s/\.\n//;ta;P;D' file
将另一行附加到当前行并测试所需的匹配项。如果找到匹配项,则重复,否则打印第一行并重复。
编辑:
Sed 命令由 ;
分隔:
:a
命名标签 a
N
将换行符和下一行附加到模式 space (PS) 中的当前行。如果没有更多的行,打印当前的 PS.
s/\.\n//
是一个替换命令,它匹配一个 .
和一个换行符并将它们替换为空。
ta
如果之前的替换成功,则跳转到标签 a
并重置标记替换成功的内部标志。
P
打印并包括 PS 中的第一个换行符。如果没有换行符就打印 PS.
D
最多删除并包括 PS 中的第一个换行符。如果 PS 不为空则在第一个 sed 命令处恢复(不要用下一行补充 PS),否则再次开始 sed 循环,
使用 GNU sed:
sed -z 's/\.\n//g' file
如何使用 sed
或 tr
.\n
)
tr -d '.\n'
删除所有找到的点和换行符,但我只需要 remove/replace 组合
sed 's/\.\n//g'
- 不要替换任何东西
非常感谢
您可以这样使用 gnu sed
:
s='Hello Mr. Foo.
- How are you?
Life is good.'
sed -E '/\.$/{:a;N;s/\.\n//;ta}' <<< "$s"
Hello Mr. Foo - How are you?
Life is good.
其他选项是使用 awk
:
awk -v RS= '{gsub(/\.\n/, "")} 1' <<< "$s"
Hello Mr. Foo - How are you?
Life is good.
Perl 来拯救:
perl -pe 's/\.\n//' < file.old > file.new
这可能适合您 (GNU sed):
sed ':a;N;s/\.\n//;ta;P;D' file
将另一行附加到当前行并测试所需的匹配项。如果找到匹配项,则重复,否则打印第一行并重复。
编辑:
Sed 命令由 ;
分隔:
:a
命名标签a
N
将换行符和下一行附加到模式 space (PS) 中的当前行。如果没有更多的行,打印当前的 PS.s/\.\n//
是一个替换命令,它匹配一个.
和一个换行符并将它们替换为空。ta
如果之前的替换成功,则跳转到标签a
并重置标记替换成功的内部标志。P
打印并包括 PS 中的第一个换行符。如果没有换行符就打印 PS.D
最多删除并包括 PS 中的第一个换行符。如果 PS 不为空则在第一个 sed 命令处恢复(不要用下一行补充 PS),否则再次开始 sed 循环,
使用 GNU sed:
sed -z 's/\.\n//g' file