質問を作成しながら実際にこれを解決しましたが、私がやった方法よりもきれいかもしれないと思います。
<>内に表示される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
もっと良い方法はありますか?