The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
ファイルからテキストを抽出用シェルスクリプト vignesh53 シェルプログラミングとスクリプティング 3 2008年2月5日 08:16午前
日付の範囲を基に報告書ファイルの解凍 ganapati シェルプログラミングとスクリプティング 2 2006年7月13日 12:26午後
日中のファイルから抽出KSH homer_hn シェルプログラミングとスクリプティング 6 2006年4月21日 02:51午前
必要性を付加ライン/ファイル内の行の組み合わせの仕方... mr_manny シェルプログラミングとスクリプティング 2 2006年1月6日 06:45午後
ファイルの抽出の仕方 apalex UNIXのダミー質問と回答のため 1 2001年5月1日 11:29午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2008年4月27日
srsahu75 srsahu75 is offline
登録ユーザー
  
 

参加日: 2008年1月
投稿: 15
ヒュー様々な行をファイルからの抽出

会員各位、
私は、巨大なファイルを100のIPのためのコマンド'フーイズ'によって生成している。ファイル内の各セクションで始まる [照会フーイズ

私はそれらのいずれかの言葉で始まる行: [照会フーイズ、 OrgName 、 NetRange 、 inetnum 、 descr 、所有者、そのセクションにある国を抽出したい。

入力

[照会whois.XJHIOUIIOOPIOP ]


OrgName :大学Cの
OrgID : U1の
住所: OIT
住所:のNH
市:紀元前
StateProv : XY
郵便番号: 000000
国:分

NetRange : XXX.YYY.MN - XXX.YYY.MQ
CIDRは: LMANERIE
NetName : UC


[照会whois.ABCE.TSD ]

%の権利を著作権によって制限されます。
%を参照してください

%注:この出力は、フィルタリングされています。
% 、 " - B "を使用してデータベースを更新するためのフラグの出力を受信するには


inetnum : XXX.YYY.MN - XXX.YYY.MQ
netname : NETの- ç
descr : HB
descr :大学
国: PQの
管理者にはC :タイ
技術的にはC :自衛隊
ステータス: FGRG
mnt - : FSDGFG
ソース: FGDFSG

役割: OPRROKROTR
アドレス:大学
アドレス: DJFIEJRE
アドレス: DIJAIRJEJ
アドレス: EIREROERE

必要な出力:

[照会whois.BUHIOUJIOU ]
OrgName : HHHHHHHHHH ( 5月または存在しない場合があります)
NetRange : TTTTTTTTT ( 5月または存在しない場合があります)
inetnum : FTYFYYYUII ( 5月または存在しない場合があります)
descr : HIJKJKLLKL (最初に出現する場合のみ)良くなると
所有者: JHKJOJOIPI ( 5月または存在しない場合があります)
国: OIOPOPOP (第1回発生)

に感謝
とについて
  #2固定リンク)  
Old 2008年4月27日
時代 era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

参加日: 2008年3月
場所: /there/is/only/bin/sh
投稿数: 3652
別の登録、さまざまな出力フォーマットを使用しています。だからしない限り、ドメインの設定は非常に制限は、例えば、ドメインのすべての1人、またはその他の理由はすべて同じ登録または登録機関はごくわずかしか設定して登録のための登録のため、これよりも思ったより複雑なクエリになるかもしれないしている。

おそらく、それに応じて別のファイルへのエントリを区別するのに最初のステップとして有用である [クエリ... ライン?にしてみてください csplit そのためのコマンドを実行します。そしてそこにあるそれぞれのフォーマットのためのパーサを作成することができます。

どのようにして停止するときに知っていますか?多くの場合、レコードの階層的な情報をごABCE.TSD例のように)は、以降の行は、それ以前のものよりも特定のものは何に見えます。 ARINの情報は、 (特に含まれています。次に、多くの場合、以前のものは、後の行をします。 (しかし、この場合は、もちろん、この必要なものに依存します。 )

とにかく、ここであなたの現在の仕様を実装する試みだ。これは単純に照会した後の最初の行は、何かを選ぶ:

コード:
perl -ne 'if (/^\[Querying/) {
  print; @wanted = qw(OrgName NetRange inetnum descr owner Country);
  $wanted = &wanted(@wanted);
}
sub wanted {
  return "^(" . join ("|", map { quotemeta $_ } @_) . "):";
}
if ($wanted && $_  =~ m/$wanted/i) {
  print;
  @wanted = grep { $_ ne $1 } @wanted;
  $wanted = @wanted ? &wanted(@wanted) : "";
}' file
これはちょっと私よりももっとひどいことをしたいのですが、出てきたのかもしれませんの出発点として使用することができます。

(振り返ってみると、おそらくそれは、すでに撮影している値を追跡するのキャプチャではなくハッシュハッシュを使用している場合は、我々はすでに見ている私たちがしています。配列には、撮影したものを押している場合を維持するより良いだろう順序は重要です。 )

時代別に編集最終; 2008年4月27日に 08:53午前..理由:大文字小文字を区別しないマッチングを/ iフラグを追加
  #3固定リンク)  
Old 2008年4月29日
srsahu75 srsahu75 is offline
登録ユーザー
  
 

参加日: 2008年1月
投稿: 15
やあ、
非常に多くの支援をいただき、ありがとうございます。このスクリプトは非常に有用な最大の70 %が自分の必要とされています。私は30 %のうちの残りのために何かしようとします。

に感謝
とについて
Satya
  #4固定リンク)  
Old 2008年5月5日
srsahu75 srsahu75 is offline
登録ユーザー
  
 

参加日: 2008年1月
投稿: 15
親愛なる時代、
私は、スクリプトと同様の出力ファイルは、変数としては、入力ファイルを取る必要があります。私は2つのテキストファイル:は、スクリプトは、スクリプトを動作する入力ファイルのリスト( 2 )動作するはずのフォルダの( 1 )リストがあります。
不足のために Perlの 私は知識を試みたが失敗。シェルスクリプトでは、私を使用する:

私は` (猫countries.txt ) `で
する

j ` (猫year.txt ) `で

する

韓国` (猫の国/ $ / $ j )は`で

する



私は、同じようにしたい perlの スクリプト変数としては、 inputfileを取る

ありがとう
  #5固定リンク)  
Old 2008年5月5日
時代 era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

参加日: 2008年3月
場所: /there/is/only/bin/sh
投稿数: 3652
シェルコーディングスタイルの問題として、括弧を完全に不必要にされ、バックでひどいものの作品がある場合にはスペースを含むファイル名です。

なぜあなたのラップでは、シェルスクリプトを使用できませんでしたが表示されない Perlの コード;があるのは大したことはない Perlの (ただし、あなたを最適化することよりも、シェル以外のファイルを何度も読むことがない国は、シェルスクリプトでも) 。しかし、とにかく、ここに記述します。私は完全にテストされていませんんです。

コード:
#!/usr/bin/perl

die "Usage: $0 dir yearfile countryfile" unless (@ARGV == 3);

open (Y, "$ARGV[1]") || die "$0: Could not open $ARGV[1]: $!\n";
open (C, "$ARGV[2]") || die "$0: Could not open $ARGV[2]: $!\n";
my @countries = <C>;
close C;
while ($year = <Y>) {
  for $country (@countries) {
    handle ("$ARGV[0]/$year/$country");
  }
}
close Y;

sub handle {
  my ($file) = @_;
  open (F, $file) || die "$0: Could not open $file: $!\n";
  while (<F>) {
    if (/^\[Querying/) {
      print; @wanted = qw(OrgName NetRange inetnum descr owner Country);
      $wanted = &wanted(@wanted);
    }
    if ($wanted && $_  =~ m/$wanted/i) {
      print;
      @wanted = grep { $_ ne $1 } @wanted;
      $wanted = @wanted ? &wanted(@wanted) : "";
    }
    close F;
  }
}  
sub wanted {
  return "^(" . join ("|", map { quotemeta $_ } @_) . "):";
}
  #6固定リンク)  
Old 2008年5月7日
srsahu75 srsahu75 is offline
登録ユーザー
  
 

参加日: 2008年1月
投稿: 15
非常に多くのコードをしていただきありがとうございます

よろしく
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 11:59午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0