【发布时间】:2021-06-02 20:44:53
【问题描述】:
希望我遗漏了一些明显的东西。
我有一个文件,其中包含如下几行:
| A | B | C |
|-----------|
Ignore this line
| And | Ignore | This |
| D | E | F | G |
|---------------|
我想找到|----| 行,删除那些...并用^ 替换前一行中的所有| 字符。例如
^ A ^ B ^ C ^
Ignore this line
| And | Ignore | This |
^ D ^ E ^ F ^ G ^
到目前为止,我得到了:
perl -0pe 's/^(\|.*\|)\n\|-+\|/$1/mg'
这需要来自标准输入的输入(sed 已经发生了一些其他修改)...并且它使用 -0 和 /m 来支持多行替换。
匹配似乎是正确的,它删除了|----| 行,但我看不出如何用$1(或\1)反向引用替换| 到^ .
我不记得我以前在哪里做的,但是另一种语言允许我使用${1/A/B} 将 A 替换为 B,但这让 perl 感到不安。
我一直想知道这是否可以使用 /e 或 /ee,但我对 perl 不太熟悉如何做到这一点。
【问题讨论】: