JSファイル内のコードステートメントからURLを抽出する


1

すべて、 フォルダー内のすべてのjsファイル内のコードステートメントで言及されているすべてのURLを抽出したい。 例えばjsファイルにこのコードが含まれる場合

var myURL="http://yahoo.com/signup"  
//var myURL="http://yahoo.com/sign" --commented out 

それから私のスクリプトが実行されるとき、出力はちょうど "べきです" http://yahoo.com/signup msgstr "現在、私はURLを抽出するためにgrepを使っています。出力には出力に両方のステートメントが含まれています。コメントされたURLを出力に入れたくありません。"

現在私は基本的なgrepステートメントを使っています

 cat somefile.js | grep "http[s]\?://"  

すべてのURLはhttp / httpsのいずれかになり、jsファイルのステートメントで宣言されます。

このgrepステートメントを微調整して、URL全体(コメント付きURLを除く)のみを出力し、完全なステートメントを出力しないようにします。このgrepステートメントをどのように微調整できますか?

回答:


0

ファイルの大きさ/数はいくつですか。

私がこの種のものに使用する非常に単純な解決策は優れています。ファイルを(カップルが1つしかない限り)コピーしてExcelに貼り付けてから、列を並べ替えることができます。あなたはすべてのvarを一箇所に見つけるべきです。それらをコピーして新しいシートに貼り付け、列を "" "に分割します。これで、URLの列が得られます。

もちろん、これは多くのファイルには実用的ではありません - スクリプトはそこでよりうまくいくでしょう。

私はこれがJSONを手で解析するのに特に便利だと思います。これが私が通常これを使用する方法の例です。これがjson配列の抜粋です。

{'english' => 'the animals, 'spanish' => 'los animales', 'image_url' => 'http://www.resourcesgraphics.com/images/Animals-Set-icons.jpg},
{'english' => 'the bear, 'spanish' => ' el oso  , 'image_url' => 'http://images.nationalgeographic.com/wpf/media-live/photos/000/005/cache/grizzly-bear_566_600x450.jpg},
{'english' => 'the beaver, 'spanish' => 'el castor, 'image_url' => 'http://images.nationalgeographic.com/wpf/media-live/photos/000/004/cache/beaver_457_600x450.jpg},
etc... (I have ~2000 entries in this file.)

すべてのURLを取得するには、ファイル全体をExcelにコピー/貼り付けし、[データ]> [テキストから列]> [区切り記号]を使用します。あなたが引用を分割するならば、それは彼ら自身のコラムにURLを引き出すでしょう。

これも反対です。 (私はこれをもっと頻繁にします。)もしあなたが上の表を作りたければ、あなたは逆にこのプロセスを使うことができます。すばやく列を埋めるには、最初の列を次のようにします。

{'*english*' => '*the animals*, '*spanish*' => '*los animales*', '*image_url*' => '*http://www.resourcesgraphics.com/images/Animals-Set-icons.jpg*},

(* =列分割)

つまり、column1 = "{'"、column2 = "english"、column3 = "' => '"などのようになります。列1、3、5などはフィラーで、データは中央に配置されます。それから私はすべてのデータを記入し、そして記入者をコピーインします。フィラーデータを入力する簡単な方法は、一番上のフィラーセルの右下ハンドルをダブルクリックすることです。これにより、列の下のデータがデータの末尾まで複製されます。

スプレッドシートを作成したら、それを保存します。後でもう一度使うことができます。データが必要なときは、すべてコピーしてテキストエディタに貼り付けるだけです。

通常、コラムの上にはたくさんの厄介なタブが残っていますが、それらは簡単な検索/置換で削除できます。

それが役立つことを願っています - あなたがより多くの情報が欲しいなら私に知らせてください! - L


詳しく説明できますか?ちょっとした例/スクリーンショット。それは面白いやり方です!
iglvzx

きっと!私は答えを更新しました - それが明確か役に立つかどうか私に知らせてください。
Sauce McBoss

@ lrog:フォルダー内の10-15個のJSファイルをループ処理する必要があります。各ファイルの最大長は400から500行です。
smokinguns

@smokingunsうん、私はそれがちょうどExcelを使用するために最速かもしれないと思うような何かのために。 >が気に入った場合20ファイル、私はスクリプトをまとめると言うでしょう。私の答えとして、私はすべてのURLがこれらの文書で定義され、インポートされたと仮定しました。これらの複雑なソースコードファイルはありますか?あなたのデータを説明してください。
Sauce McBoss

@smokinguns実際に、コメントされたURLから実際のURLを選別するのに問題があるだけなら、それらをExcelに入れて選別することはできませんか。その後、列を分割してデータを取り出すことができます。
Sauce McBoss

0

これがPERLの解決策です。

perl -ne '/^[^\/\/]*"(http.+?)"/ && do{print "$1\n"}' somefile.js 

説明:

  • perl -ne :入力ファイルを1行ずつループし(-n)、コマンドラインで指定したスクリプトを実行します(-e)

  • /^[^\/\/]*"(http.+?)"/ :ない行を探す // 最初 http に続く文字を保存します。 http 最初まで "。かっこ内のパターン () 保存されます $1

  • && do{print "$1\n"} :行が正規表現と一致する場合は、キャプチャされたパターン(URL)を印刷します。

警告:

これは、1行に1つのURLしかないことを前提とした非常に単純な解決策です。 すべて URLは引用されています。もっと洗練されたバージョンが必要かどうか私に教えてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.