Как удалить строки, запускающиеся с определенных строк

Есть ли способ удалить строки, запускающиеся с определенных строк.

Я сделал, чтобы этот youtube-dl кодировал

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E

и его результат похож на это

[youtube:playlist] PL1C815DB73EC2678E: Downloading webpage
[download] Downloading playlist: Less than 1 minute
[youtube:playlist] playlist Less than 1 minute: Collected 4 video ids (downloading 4 of them)
[download] Downloading video 1 of 4
[youtube] KNLwsqzFfNg: Downloading webpage
[youtube] KNLwsqzFfNg: Extracting video information
[youtube] KNLwsqzFfNg: Downloading DASH manifest
[download] Destination: _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a

[download]   0.4% of 231.51KiB at  6.10KiB/s ETA 00:30
[download]   1.1% of 231.51KiB at 27.07KiB/s ETA 00:10
[download]   4.0% of 231.51KiB at 19.24KiB/s ETA 00:04
[download]   6.5% of 231.51KiB at 75.06KiB/s ETA 00:03
[download]  13.4% of 231.51KiB at 98.22KiB/s ETA 00:03
[download]  28.7% of 231.51KiB at 81.40KiB/s ETA 00:02
[download]  61.7% of 231.51KiB at 91.56KiB/s ETA 00:01
[download]  86.2% of 231.51KiB at 82.96KiB/s ETA 00:00
[download] 100.0% of 231.51KiB at 73.21KiB/s ETA 00:00
[download] 100% of 231.51KiB in 00:02
[ffmpeg] Correcting container in "_1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a"
WARNING: Your copy of avconv is outdated, update avconv to version 10-0 or newer if you encounter any errors.
[avconv] Destination: _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.mp3
WARNING: Your copy of avconv is outdated, update avconv to version 10-0 or newer if you encounter any errors.
Deleting original file _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a (pass -k to keep)
[download] Downloading video 2 of 4
[youtube] wTvXkMpJflk: Downloading webpage
[youtube] wTvXkMpJflk: Extracting video information
[youtube] wTvXkMpJflk: Downloading DASH manifest

Я хочу удалить все строки, запускающиеся с [youtube], [ffmpeg] и [avconv] и доберитесь как это

[youtube:playlist] PL1C815DB73EC2678E: Downloading webpage
[download] Downloading playlist: Less than 1 minute
[youtube:playlist] playlist Less than 1 minute: Collected 4 video ids (downloading 4 of them)
[download] Downloading video 1 of 4
[download] Destination: _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a

[download]   0.4% of 231.51KiB at  6.10KiB/s ETA 00:30
[download]   1.1% of 231.51KiB at 27.07KiB/s ETA 00:10
[download]   4.0% of 231.51KiB at 19.24KiB/s ETA 00:04
[download]   6.5% of 231.51KiB at 75.06KiB/s ETA 00:03
[download]  13.4% of 231.51KiB at 98.22KiB/s ETA 00:03
[download]  28.7% of 231.51KiB at 81.40KiB/s ETA 00:02
[download]  61.7% of 231.51KiB at 91.56KiB/s ETA 00:01
[download]  86.2% of 231.51KiB at 82.96KiB/s ETA 00:00
[download] 100.0% of 231.51KiB at 73.21KiB/s ETA 00:00
[download] 100% of 231.51KiB in 00:02
WARNING: Your copy of avconv is outdated, update avconv to version 10-0 or newer if you encounter any errors.
WARNING: Your copy of avconv is outdated, update avconv to version 10-0 or newer if you encounter any errors.
Deleting original file _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a (pass -k to keep)
[download] Downloading video 2 of 4
etc..
etc..
.
.

я попробовал этот метод, но его ошибка показа и он только предполагают для удаления [youtube]

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | sed '^/[youtube]/ d' 
5
задан 14 June 2015 в 06:29

4 ответа

sed -i '/\[youtube\]/d' /path/to/file

удалит строки, содержа" [YouTube]".

Как одна команда можно объединить шаблоны как

sed -i '/\[youtube\]\|\[ffmpeg\]\|\[avconv\]/d' /path/to/file

, Или прямо от команды

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 \
 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | 
    sed '/\[youtube\]\|\[ffmpeg\]\|\[avconv\]/d' > output.txt

Это запишет результат в файл output.txt.

, Если Вы хотите удалить строки, не только содержащие [youtube], но и запускающиеся с [youtube], затем добавляют ^ к шаблону, как sed '/^\[youtube\]/d'.

, Но в Вашем случае это не имеет значения.

10
ответ дан 23 November 2019 в 08:41

Используйте grep -v в качестве следующего:

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | grep -v '^[youtube]' | grep -v '^[ffmpeg]' | grep -v '^[avconv]'
1
ответ дан 23 November 2019 в 08:41

Я предлагаю использовать grep -vE как так:

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | grep -vE '^\[(youtube|ffmpeg|avconv)\]'

От man grep:

-v, --invert-match
              Invert the sense of matching, to select non-matching lines.  (-v
              is specified by POSIX.)



-E, --extended-regexp
              Interpret  PATTERN  as  an extended regular expression (ERE, see
              below).  (-E is specified by POSIX.)

Флаг-E используется, чтобы не выходить из квадратных скобок с наклонными чертами. Без флага-E необходимо выйти из квадратных скобок с обратной косой чертой, как так grep -vE '\[youtube\]\|\[ffmpeg\]\|\[avconv\]' Править:

Так как Вы запросили awk, вот один с awk:

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | awk '{if ($0~/^\[youtube\]/||/^\[ffmpeg\]/||/^\[avconv\]/||/^WARNING/) next;print}'

4
ответ дан 23 November 2019 в 08:41

Использование Perl:

< inputfile perl -pe 's/^\[(youtube|ffmpeg|avconv)\].*$//' > outputfile

Проанализировать вывод youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E непосредственно, передайте его вывод по каналу к команде, не перенаправляя содержание inputfile:

`youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | perl -pe 's/^\[(youtube|ffmpeg|avconv)\].*$//' > outputfile` 
  • < inputfile: перенаправляет содержание inputfile кому: perl stdin
  • > outputfile: перенаправляет содержание perl stdout кому: outputfile
  • -p: места a while (<>) { [...] } цикл вокруг сценария и печати каждая обработанная строка
  • -e: читает сценарий из аргументов

Разбивка сценария Perl:

  • s: утверждает для выполнения замены
  • /: запускает шаблон
  • ^: соответствует запуску строки
  • \[: соответствия a [ символ
  • (: начинает группировать позволенные строки
  • youtube: соответствия a youtube строка
  • |: разделяет вторую позволенную строку
  • ffmpeg: соответствия a ffmpeg строка
  • |: разделяет третью позволенную строку
  • avconv: соответствия a avconv строка
  • ): остановки, группирующие позволенные строки
  • \]: соответствия a ] символ
  • .*: соответствия любое количество любого символа
  • $: соответствует концу строки
  • /: останавливается шаблон / запускает замещающую строку
  • /: останавливает замещающую строку
1
ответ дан 23 November 2019 в 08:41

Другие вопросы по тегам:

Похожие вопросы: