すべての「裸の」URLをテキストファイルにキャプチャし、それらをに置き換えるsedスクリプトを作成しようとしています<a href=[URL]>[URL]</a>
. 「ネイキッド」とは、アンカー タグ内にラップされていない URL を意味します。
最初に考えたのは、先頭に " または > がなく、後に < または " がない URL に一致する必要があるということでした。しかし、私が知る限り、sed には先読みや後読みがないため、「前も後ろも持たない」という概念を表現するのに苦労しています。
サンプル入力:
[Beginning of File]http://foo.bar arbitrary text
http://test.com other text
<a href="http://foobar.com">http://foobar.com</a>
Nearing end of file!!! http://yahoo.com[End of File]
必要な出力の例:
[Beginning of File]<a href="http://foo.bar">http://foo.bar</a> arbitrary text
<a href="http://test.com">http://test.com</a> other text
<a href="http://foo.bar">http://foo.bar</a>
Nearing end of file!!! <a href="http://yahoo.com">http://yahoo.com</a>[End of File]
3 行目は既に 内にあるため、変更されていないことに注意して<a href>
ください。一方、1 行目と 2 行目の両方が変更されます。最後に、URL 以外のすべてのテキストが変更されていないことを確認します。
最終的に、私は次のようなことをしようとしています:
sed s/[^>"](http:\/\/[^\s]\+)/<a href="\1">\1<\/a>/g 2-7-2013
まず、次の URL が正しく一致して URL を削除することを確認しました。
sed 's/http:\/\/[^\s]\+//g'
次にこれを試しましたが、ファイル/入力の先頭から始まる URL と一致することはできません。
sed 's/[^\>"]http:\/\/[^\s]\+//g'
後読み/先読みをシミュレートするか、ファイルの先頭とファイルの終わりを明示的に一致させることにより、sedでこれを回避する方法はありますか?