仅替换组合符号点 + 换行符



如何更正仅将组合点和换行符(.n)替换为sedtr

tr -d '.n'删除所有找到的点和换行符,但我只需要删除/替换组合

sed 's/.n//g'- 不要更换任何东西

非常感谢

这可能对你有用(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 循环,

你可以像这样使用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

使用 GNUsed

sed -z 's/.n//g' file

最新更新