【发布时间】:2012-03-07 10:24:49
【问题描述】:
我有一个具有以下特征的文本文件:
- 每行至少有三个“单词”,用空格隔开
- “单词”可以是任何字符或字符串
我已经在一些行中附加了一些注释,其中包含对原始单词进行更改的初步建议,现在想使用 sed 为我进行这些更改。因此,为了提供更清晰的图片,我的文件如下所示:
NO NO O
SIGNS NN O #NNS
GIVEN VBD B-VP #VBN
AT IN O
THIS NN O
TIME NN O ## B-NP
. PER O
...
带有 1 # 的注释用于替换一行中的第二个单词,带有 2 个 # 的注释用于替换一行中的第三个单词。任何人都可以建议一种使用 sed (或 awk 或其他任何东西)的方法吗?再次澄清(希望如此),我的目标是获取 # 或 ## 之后的模式,并将该行的第 n 个单词替换为匹配的模式。
谢谢。
【问题讨论】:
-
是否可以规定您的笔记在
#之后有预定数量的空格?现在,您显示的注释在#之后有 0 和 1 个空格,这会使代码不必要地难以适应。如果你的笔记后面有零个空格会更容易 -
另外,您希望注释出现在输出中吗?
-
@SiegeX:是的,我应该可以很容易地删除“## B-NP”中的多余空格,或者根据需要在“#NNS”中添加一个空格。
-
@SiegeX:不,我不想在输出中添加注释——我确实想在几个制表符之后保留一个像“#”这样的标记,以指定我已更改的行。