web-dev-qa-db-fra.com

Comment supprimer des lignes commençant par certaines chaînes

Est-il possible de supprimer des lignes commençant par certaines chaînes?.

J'ai ce code youtube-dl

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

et son résultat est comme ça

[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

Je veux supprimer toutes les lignes commençant par [youtube], [ffmpeg] et [avconv] et ainsi de suite

[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..
.
.

j'ai essayé cette méthode mais son erreur d'affichage et il suppose seulement de supprimer [youtube]

youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E | sed '^/[youtube]/ d' 
5
potholiday
sed -i '/\[youtube\]/d' /path/to/file

supprimera les lignes contenant "[youtube]".

En une seule commande, vous pouvez combiner des motifs tels que

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

Ou directement de votre commande

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

Cela va écrire le résultat dans un fichier output.txt.

Si vous souhaitez supprimer des lignes contenant non seulement [youtube], mais commençant par [youtube], ajoutez ensuite ^ au modèle, comme sed '/^\[youtube\]/d'.

Mais dans votre cas ce n'est pas grave.

9
Pilot6

Je suggère d'utiliser grep -vE comme suit:

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

De 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.)

Le drapeau -E est utilisé pour éviter d’échapper des crochets avec des barres obliques. Sans l'indicateur -E, vous devez échapper les crochets avec une barre oblique inverse, comme ceci grep -vE '\[youtube\]\|\[ffmpeg\]\|\[avconv\]'Edit:

Puisque vous avez demandé awk, en voici une avec 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

Utilisez grep -v comme suit:

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
Abdennour TOUMI

Utiliser Perl:

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

Pour analyser directement la sortie de youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E, dirigez-la vers la commande sans rediriger le contenu de 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: redirige le contenu de inputfile vers Perl 's stdin
  • > outputfile: redirige le contenu de Perl 's stdout en outputfile
  • -p: place une boucle while (<>) { [...] } autour du script et imprime chaque ligne traitée
  • -e: lit le script à partir des arguments

Répartition du script Perl:

  • s: affirme effectuer une substitution
  • /: démarre le motif
  • ^: correspond au début de la ligne
  • \[: correspond à un [
  • (: commence à regrouper les chaînes autorisées
  • youtube: correspond à une chaîne youtube
  • |: sépare la deuxième chaîne autorisée
  • ffmpeg: correspond à une chaîne ffmpeg
  • |: sépare la troisième chaîne autorisée
  • avconv: correspond à une chaîne avconv
  • ): arrête de grouper les chaînes autorisées
  • \]: correspond à un ]
  • .*: correspond à un nombre quelconque de caractères
  • $: correspond à la fin de la ligne
  • /: arrête le motif/démarre la chaîne de remplacement
  • /: arrête la chaîne de remplacement
1
kos