【发布时间】:2016-03-14 12:06:23
【问题描述】:
我正在寻找一个sed,我可以在其中识别两个指示器之间的所有文本,然后用占位符替换它。
例如,第一个指标是单词列表
(no|noone|haven't)
第二个指标是标点符号列表 代码:
(.|,|!)
来自输入文本,例如
“没有人了解剧情。没有故事情节。我没有 把这部电影推荐给我的朋友!你明白了吗?”
期望的结果是。
“没有人理解_AFFIX我_AFFIX。没有故事情节_AFFIX。我 没有推荐_AFFIX this_AFFIX 电影_AFFIX to_AFFIX my_AFFIX 朋友们_AFFIX!你明白了吗?”
我知道有以下sed:
sed -n '/WORD1/,/WORD2/p' /path/to/file
识别两个指标之间的内容。我还发现了很多很棒的信息和资源here。但是,我仍然找不到将词缀附加到两个指示器之间出现的每个文本标记的方法。
我也考虑过用awk,比如
awk '{sub(/.*indic1 /,"");sub(/ indic2.*/,"");print;}' < infile
然而,它不允许我附加词缀。
有没有人建议这样做,awk 或 sed?
【问题讨论】:
-
A.您所依赖的 sed 语法依赖于行来分隔范围,因此它不适用于同一行中的文本。 B. 您最好在
awk中一次搜索 1 个单词并在那里管理输出。 C. 你的例子似乎不一致。将您的“规则”应用于Noone understands the plot产生Noone understands_AFFIX me_AFFIX.其中There is no storyline.产生There is no storyline_AFFIX。AFFIX是如何在第一个中插入 2x 而在第二个中仅插入 1x 的?祝你好运。