【发布时间】:2011-05-09 19:20:35
【问题描述】:
我对 sed 很陌生,因此即使查看示例,我也完全不知道如何根据需要编写正确的代码(this one 很接近,但似乎不适用于多行替换。
这是我的 input.txt
这是一个分裂的考验……
|第一个单词|第二个单词第三个单词 第四字第五字第六字
这是一个分裂的考验……
第一个单词|第二个单词|第三个单词 第四字第五字第六字
这是一个分裂的考验……
第一个单词第二个单词|第三个单词| 第四字第五字第六字
这是一个分裂的考验……
第一个单词第二个单词第三个单词 |第四字|第五字第六字
这是一个分裂的考验……
第一个单词第二个单词第三个单词 第四字|第五字|第六字
这是一个分裂的考验……
第一个单词第二个单词第三个单词 第四字第五字|第六字|
我需要做的是删除两个“|”之外的所有文本并将文本保留在两个“|”内
然后在每个单词之间插入一个 Unicode 零宽度空格 (U+200B)
导致:
firstwordU+200BsecondwordU+200BthirdwordU+200BfourthwordU+200BfifthwordU+200Bsixthword
我试过了
sed '\|/d;/|/,$d' input.txt
更新:这没什么用
和
sed -e 's/.*|\([^]]*\)|.*/\1/g' input.txt
这很接近,但不会从不包含“|”的行中删除任何内容(我需要删除两个“|”中未包含的所有内容,而且我不知道如何在单词之间添加零宽度空间。但就像我说的,我真的不知道自己在做什么。
任何帮助将不胜感激。
-内森
【问题讨论】: