Unix Shell Bash 'One-Liner' для выделения всех скобок, содержащих URL, который включает в себя «.mp3»

StackOverflow https://stackoverflow.com/questions/4402342

Вопрос

Я полностью новичок в этом тупике Unix Bash - и первый вопрос здесь! Надеюсь, вы, ребята, можете помочь :)

Проблема:

У меня есть масса грязного веб-исходного кода (упаковка / неформатированная), содержащая несколько вхождений:

(«http://www.example.com/path/audio.mp3 ')

Не могли бы вы помочь с одноклассником (SED / awk ...), которые будут изолировать эти случаи скобки, содержащие URL, который включает в себя «.mp3», чистый ведущий / трейлинг "()" а также " ' «Персонажи, а затем распечатайте как список (по одному на строку) к файлу Active .txt.

Примечание: One-LiLER будет использоваться в Automator на Mac в качестве службы / рабочего процесса к действию в выбранном тексте.

Любая помощь была бы очень ценится как (несмотря на разгар по всем онлайн-турам) Я полностью потерян.

С уважением,

Дейв

Это было полезно?

Решение

С использованием egrep с участием -o (Вывод только части, которые совпадают) должны сделать трюк. Попробуйте что-то вроде этого:

egrep -o "http://[^'\"]+.mp3" FILENAME

Другие советы

Perl, какой Mac должен иметь.

#!/usr/bin/perl
while(<STDIN>)
{
    $_ =~ /.*(http:\/\/.*\.mp3).*/;
    print $1 . '\n';
}

Попробуйте уточнить следующее:

perl -ne $'while(/\(\'(http:\/\/[\w.\/]+?\.mp3)\'\)/g) { print "$1\n"; }' < input_file > output_file

Он читал stdin (здесь: input_file) Одна строка за раз, ищет каждое вхождение «URL» в этой линии и печатает его на STDOUT (здесь: output_file) без (' а также ').

awk '{print $2}' FS="('|')" < filename

cat filename | tr ')' '\n' | awk '{print $2}' FS="('|')" > output.txt

Просто заменить filename с именем вашего файла, содержащего эти линии ..

ИЛИ

echo "your multiline\
text here" | tr ')' '\n' | awk '{print $2}' FS="('|')"

Просто попробуйте:

tr ')' '\n' | awk '{print $2}' FS="('|')"

Это будет соответствовать URL-адресам, которые появляются в скобках и отдельные кавычки:

grep -Po "(?<=\(')http.*?mp3(?='\))"

URL-адреса выводятся, по одному на линию, без скобок или одиночных кавычек. То -P Вариант для совместимых PERL регулярных выражений доступна (по крайней мере) в GNU и OS X grep Версии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top