2012-06-13 2 views
0

привет я работаю на shellscript .. предположить, что это данные мой сценарий оболочки бежит нарегулярное выражение Grep конкретные пункты файла

 Ownership 
       o Australian Owned 
    ? 
    Ads for Mining Engineers 
    232 results for 
mining engineers in All States 
    filtered by Mining Engineers [x] category 
    * [ ] 
        [34]get directions 
     Category: 
     [35]Mining Engineers 
     [36]Arrow Electrical Services in Wollongong, NSW under Mining 
     Engineers logo 
      [37]email 
      [38]send to mobile 
      [39]info 
      Compare (0) 
    * [ ] 
     . [40]Firefly International 
     Designers & Manufacturers. Service, Repair & Hire. 
     We are the provider of mining engineers in Mt Thorley, NSW. 
     25 Thrift Cl, Mt Thorley NSW 2330 
     ph: (02) 6574 6660 
      [41]http://www.fireflyint.com.au 
      [42]get directions 
     Category: 
     [43]Mining Engineers 
     [44]Firefly International in Mt Thorley, NSW under Mining Engineers 
     logo 
      [45]email 
      [46]send to mobile 
      [47]info 
      Compare (0) 
    * [ ] 
     [48]Materials Solutions 
     Materials Research & Development, Slurry Rheology & Piping Design. 
     We are a well established company servicing the mining industry & 
     associated manufacturing industries in all areas. 
     Thornlie WA 6108 
     ph: (08) 6468 4118 
      [49]www.materialssolutions.com.au 
     Category: 
     [50]Mining Engineers 
     [51]Materials Solutions in Thornlie, WA under Mining Engineers logo 
      [52]email 
      [53]send to mobile 
      [54]info 
      Compare (0) 
    * [ ] 
     . [55]ATC Williams Pty Ltd 
     Our services are available from concept to completion of the works. 
     Today, as the rebranded ATC Williams, we continue to expand our 
     operations across Australia and in locations around the world. 
     Unit 1, 21 Teddington Rd, Burswood WA 6100 
     ph: (08) 9355 1383 
      [56]www.atcwilliams.com.au 
      [57]get directions 
     Category: 
     [58]Mining Engineers 
     [59]ATC Williams Pty Ltd in Burswood, WA under Mining Engineers 
     logo 
      [60]email 
      [61]send to mobile 
      [62]info 
      Compare (0) 

и мне нужно, чтобы захватить адреса, которые выглядят следующим образом

* [ ] 
     . [55]ATC Williams Pty Ltd 
     Our services are available from concept to completion of the works. 
     Today, as the rebranded ATC Williams, we continue to expand our 
     operations across Australia and in locations around the world. 
     Unit 1, 21 Teddington Rd, Burswood WA 6100 
     ph: (08) 9355 1383 
      [56]www.atcwilliams.com.au 

так, что мне делать .. я уже работал над регулярными выражениями, как

^* (.? [\ Ш \ W? \ S?] *) + (. Com.au) $

но то не помогает .. он совпадает с адресом, когда я дать входной файл с адрес, который я хочу ... но когда он предоставляется массово, он не помогает. так может кто-нибудь помочь мне ..

+0

и если я использую такое длинное выражение, мой Grep ищет конкретные символы метасимволов .. как если я имею в виду \ S, как любое пространство, он ищет букву «S»: ( –

ответ

0

Попробуйте

^\s*\*\s*\[ \][^\*]+?[.]com[.]au$ 

объяснение

^  # Assert position at the beginning of a line (at beginning of the string or after a line break character) 
\s  # Match a single character that is a “whitespace character” (spaces, tabs, and line breaks) 
    *  # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
\*  # Match the character “*” literally 
\s  # Match a single character that is a “whitespace character” (spaces, tabs, and line breaks) 
    *  # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
\[  # Match the character “[” literally 
\  # Match the character “ ” literally 
\]  # Match the character “]” literally 
[^\*] # Match any character that is NOT a * character 
    +?  # Between one and unlimited times, as few times as possible, expanding as needed (lazy) 
[.]  # Match the character “.” 
com  # Match the characters “com” literally 
[.]  # Match the character “.” 
au  # Match the characters “au” literally 
$  # Assert position at the end of a line (at the end of the string or before a line break character) 
+0

, что на самом деле выглядит хорошо! , но когда я пытаюсь использовать grep с этим выражением $ grep '^ \ s * \ * \ s * \ [\] [^ \ *] +? [.] com [.] au $' file это не дает мне результатов. , но когда я использую его в тесте регулярного выражения .. он, безусловно, работает .. , так что вы можете мне рассказать, в чем проблема? @Cylian –

+0

@KiranVemuri: Вы забыли уйти от одного ' * 'сразу после'^\ s * 'в вашем команда '' $ grep '^ \ s ** \ s * [] [^ *] +? [.] com [.] au $ ''. Измените его на '' $ grep '^ \ s * \ * \ s * [] [^ *] +? [.] Com [.] Au $ '' или '' '' $ grep'^\ s * \ * \ s * [] [^ *] +? \. com \ .au $ ''. Надеюсь, это сработает. – Cylian

+0

это то же самое, что я сказал .. это выражение работает супер нормально, когда я пытаюсь в тесте регулярного выражения, но когда я его grep в моем терминале linux .. он не дает мне результата :( –

1

Я вижу некоторые проблемы с регулярным выражением

^*(.?[\w\W?\s?]*)+(.com.au)$ 
^^  ^^^^
1 1   2 2 1 1 
  1. специальный символ в том, что нужно избежать

  2. жадный квантор, которые соответствуют все до последнего " .com.au ", добавьте ? после квантификатора, чтобы сделать его неровным ==> совпадение как можно меньше (означает до первого« .com.au », который находится в конце строки).

    ==> Это ваша главная проблема

  3. Вы гнездо кванторы *)+, вам не нужно, что

  4. В вашем примере есть пробел между «*» и «», поэтому либо совпадение для пробелов, либо удаление точки вообще, это будет соответствовать вашему классу символов.

  5. Существует также пробел между началом строки и "*"

Итак, попробуйте это

^\s*\*([\w\W?\s?]*?)(\.com\.au)$ 

Посмотреть here on Regexr

+0

Нету .. это не работает .. моя последняя попытка быть

\*(\.?[\w\W?\s?]*)+([\w\W\s\d]*)?([\W\w]*\.\a\u)*$
и это на самом деле соответствием всего текста, а я только хочу, чтобы соответствовать addrersses части! –

+0

и если я использую такое длинное выражение, мой Grep ищет конкретные символы метасимволов .. как , если я имею в виду \ S, как любое пространство, он ищет букву «s» :( @stema –

Смежные вопросы