2013-03-27 2 views
0

Мне нужно извлечь специальный URL из двух типов списков.Извлечь URL из двух типов списков

wav_list_01.txt:

http://www.example.com/3277rdsh6721vs2981fg66_453.wav?ID=8572145" 
http://www.example.com/3277rdsh6721vs2981fg66_1234.wav?ID=8572145" 
http://www.example.com/3277rdsh6721vs2981fg66_89.wav?ID=8572145" 
http://www.example.com/3277rdsh6721vs2981fg66_356.wav?ID=8572145" 

В этом типе списка правильный URL всегда один с 4 цифр после подчеркивания:

http://www.example.com/3277rdsh6721vs2981fg66_1234.wav?ID=8572145" 

Я могу сделать это следующим grep:

grep -o 'http[^"]*_[0-9]\{4\}.wav?ID=[0-9]\{1,\}' wav_list_01.txt 

Сейчас на e проблема. Я также должен извлечь специальный URL из другого типа списка.

wav_list_02.txt:

http://www.example.com/83d72jd72bnx27887f2s34_9.wav?ID=0942145" 
http://www.example.com/83d72jd72bnx27887f2s34.wav?ID=0942145" 
http://www.example.com/83d72jd72bnx27887f2s34_5.wav?ID=0942145" 

В этом типе списка правильный URL всегда один БЕЗ знака подчеркивания и одна цифра:

http://www.example.com/83d72jd72bnx27887f2s34.wav?ID=0942145" 

Есть ли способ может ли изменить указанную команду grep для работы с wav_list_02.txt? если не то, что является следующим лучшим решением для обработки обоих списков в одном скрипте?

Скрипт будет работать в командной строке, поэтому решение должно быть совместимым с POSIX, желательно также чистым и простым.

Заранее спасибо.

РЕШЕНИЕ:

С помощью Тельмана было найдено решение:

grep -o 'http[^"]*_[0-9]\{4\}.wav?ID=[0-9]\{1,\}\|\|http[^_]*?ID=[0-9]\{1,\}' 

ответ

0

вы можете просто использовать не оператор «^» и сказать, что это может быть все, но не подчеркиванием - если у вас есть свой URL-адрес, это что-то вроде «[^ _] *» - все, что не является подчеркиванием.

Вставьте это с помощью оператора «или» в команду выше команды grep, и она будет записываться в файл с четырьмя цифрами, и если в них нет подчеркивания. Помните, что вам не удалось выполнить оператор: '\ |'

+0

Но тогда это не будет работать с wav_list_01.txt, или я что-то не понимаю? – user2216606

+0

Хорошо, я думаю, что я не понимаю ваш вопрос, вы хотите, чтобы оба файла совпадали с одним регулярным выражением? – Thalmann

+0

Ahhh теперь я понимаю, вы можете просто использовать или оператор, я изменю свой пост ... – Thalmann

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