Unix Shell Bash 'One-Liner' для выделения всех скобок, содержащих URL, который включает в себя «.mp3»
-
25-09-2019 - |
Вопрос
Я полностью новичок в этом тупике 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
Версии.