【发布时间】:2013-02-28 21:03:35
【问题描述】:
我实际上在撰写问题时解决了这个问题,但我认为它可能比我做的方式更整洁。
除了出现在 s 中的 url 合法内容(来自 rdf/n3 实体)之外,我想修剪空格和大多数标点符号。
源文本示例如下:<this is a problem> <this_is_fine> "this is ok too" .
<http://WeDontNeedToTouchThis.> <http:ThisContains"Quotes'ThatWillBreakThings> "This should be 'left alone'." .
输出需要将空格转换为下划线并修剪引号以及 url/iri 中不合法的任何内容。
<http://This is a "problem"> => <http://This_is_a_problem>
这些都没用。sed -e 's/\(<[^ ]*\) \(.*>\)/\1_\2/g' badDoc.n3 | head
sed '/</,/>/{s/ /_/g}' badDoc.n3 | head
我的最终解决方案似乎可行,是:sed -e ':a;s/\(<[^> ]*\) \(.*>\)/\1_\2/g;ta' badDoc.n3 | sed -e ':b;s/\(<[:/%_a-zA-Z0-9.\-]*\)[^><:/%_a-zA-Z0-9.\-]\(.*>\)/\1\2/g;tb' > goodDoc.n3
有没有更好的办法?
【问题讨论】:
-
不知道你想做什么。源文本的输出是什么?
-
我希望你意识到你不能在不改变文件含义的情况下改变尖括号内的字符。此外,“'”是 n3 中的保留字符,生成此类文件的任何内容都已损坏,应予以修复。
-
我知道,我们正在生成 n3,虽然它在我们的导入过程中已修复,但我正在处理一批 n3,其中包含 IRI 中未转义的字符串(主要是文件名,包括引号),这些需要在我们处理该批次之前进行清洁。
-
+1 个有趣的问题。