如何更正仅使用.\n
或sed
tr
)
tr -d '.\n'
删除所有结果点和换行符,但我需要删除/替换组合
sed 's/\.\n//g'
- 不要替换任何东西
非常感谢
答案 0 :(得分:1)
您可以像这样使用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.
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed ':a;N;s/\.\n//;ta;P;D' file
将另一行附加到当前行并测试所需的匹配。如果发现匹配,则重复打印第一行并重复。
编辑:
Sed命令由;
分隔:
:a
将标签命名为a
N
将新行和下一行附加到模式空间(PS)中的当前行。如果没有其他行,请打印当前的PS。s/\.\n//
是一个与.
和换行符匹配的替换命令,并将其替换为空。ta
如果上一次替换成功,请跳转到标签a
并重置标记成功替换的内部标记。P
打印并包含PS中的第一个换行符。如果没有新行,只需打印PS。D
删除并包含PS中的第一个换行符。如果PS不是空的,则在第一个sed命令恢复(不要用下一行补充PS),否则再次开始sed循环,答案 2 :(得分:0)
Perl救援:
perl -pe 's/\.\n//' < file.old > file.new
答案 3 :(得分:0)
使用GNU sed :
sed -z 's/\.\n//g' file