每行有一个定义,格式为“WORDPartOfSpeech”
任务是处理文档,添加词性 无论什么时候定义。不应该重新格式化。
例如,如果词典是
文章 形容词 BALL名词
,文件是
大红球掉了下来。
然后输出应为
/ article大/形容词红球/名词下降。
如果我将词典放在数据库表中作为2个字段,我运行了一个SQL选择,输出为1逗号分隔行,格式如下:“/ article,big / adjective,ball / noun”那我怎么样?拿起那条线并对着文件进行处理,以便输出如上所述?
答案 0 :(得分:0)
您应该修改您的SQL查询以保留与词典中的术语不匹配的任何单词(可能通过使用外部联接;如果您向我们展示该查询,我们可以为您提供更具体的建议)。然后,假设您的输出看起来像这样(每个术语后面只有/
与您的词典不匹配):
The/article big/adjective red/ ball/noun fell/.
您可以使用sed
这样清理它(假设字符串已保存在名为$variablename
的变量中:
sed 's_\/\([ .]\)_\1_g' <(echo "$variablename")
说明:
我使用_
代替/
来界定s
命令的易读性。语法s/search/replace/g
与s_search_replace_g
同义。
\/\([ .]\)
告诉sed匹配任何文字/
(转义为\/
),后跟空格或句点[ .]
。由于模式周围有\(
和\)
,因此与此模式匹配的任何内容都会存储到参考中。
\1
是我之前提到的反向引用。这类似于一个变量,用于存储我们在搜索模式中用括号括起来的匹配部分。实际上,我已经告诉sed去除任何前后斜线,后面跟着一个空格或一段时间,而不会剥离空间或句点本身。
输出:
The/article big/adjective red ball/noun fell.