处理文件,添加词性

时间:2013-02-04 14:40:56

标签: sed

每行有一个定义,格式为“WORDPartOfSpeech”

任务是处理文档,添加词性 无论什么时候定义。不应该重新格式化。

例如,如果词典是

文章 形容词 BALL名词

,文件是

大红球掉了下来。

然后输出应为

/ article大/形容词红球/名词下降。

如果我将词典放在数据库表中作为2个字段,我运行了一个SQL选择,输出为1逗号分隔行,格式如下:“/ article,big / adjective,ball / noun”那我怎么样?拿起那条线并对着文件进行处理,以便输出如上所述?

1 个答案:

答案 0 :(得分:0)

您应该修改您的SQL查询以保留与词典中的术语不匹配的任何单词(可能通过使用外部联接;如果您向我们展示该查询,我们可以为您提供更具体的建议)。然后,假设您的输出看起来像这样(每个术语后面只有/与您的词典不匹配):

The/article big/adjective red/ ball/noun fell/.

您可以使用sed这样清理它(假设字符串已保存在名为$variablename的变量中:

sed 's_\/\([ .]\)_\1_g' <(echo "$variablename")

说明:

  • 我使用_代替/来界定s命令的易读性。语法s/search/replace/gs_search_replace_g同义。

  • \/\([ .]\)告诉sed匹配任何文字/(转义为\/),后跟空格或句点[ .]。由于模式周围有\(\),因此与此模式匹配的任何内容都会存储到参考中。

  • 替换模式中的
  • \1是我之前提到的反向引用。这类似于一个变量,用于存储我们在搜索模式中用括号括起来的匹配部分。实际上,我已经告诉sed去除任何前后斜线,后面跟着一个空格或一段时间,而不会剥离空间或句点本身。

输出:

The/article big/adjective red ball/noun fell.