このコマンドの機能を理解していません。
grep '<span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>' -R articles/ --only-matching | sed 's@articles//@@' | sed 's@:<span id=.geodata. class=.geo.>@ @' | sed 's@; @ @' | sed 's@</span>@@' | sort -u -b -k1 > geocodes_from_html.txt
いくつかの背景知識:私はWikiの記事を書いており、その記事でいっぱいのフォルダ(「記事」)を持っています。処理スクリプトは数年前に書かれており、当時の場所に関する地理情報は一般的に次のようになりました。
<span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>
これで、次のようになります。
<abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>
このコマンドが機能するにはどうすればよいですか?
答え1
提供されたコマンドは、ディレクトリ内のすべてのファイルからgrep
この文字列を検索します。次のコマンドは、複数の文字列を置き換えます。<span [...]</span>
articles
sed
たとえばsed s@articles/@@
(スラッシュ/のみ)以下のように読み取ることができます。sed search@this_string@replace_with_this@
;文字列はarticles/
何でも置き換えられます。あるスクリプトから次のスクリプトに渡すのではなく、すべてのスクリプトを1つのスクリプトにまとめて同じ結果を得ることができますsed
。
座標を抽出するために他のコマンドを使用したくない場合は、次のようにします。
grep '<abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>' -R articles --only-matching | sed 's@articles/@@;s@:<abbr class="latitude">@ @;s@<abbr class="longitude">@ @;s@</abbr>@@g' | sort -u -b -k1 >geocodes_from_html.txt