web-dev-qa-db-fra.com

Supprimer la première partie de chaque ligne d'un fichier texte

J'essaie de modifier un fichier texte comportant plusieurs lignes ressemblant à ceci:

avaya logs 20171202 000000 (9).txt: 660119211mS CMLOGGING: CALL:2017/12/0111:14,00:00:16,008,203,O,208,208,Jon,,,1,,""n/a,0

Je veux tout supprimer avant où il est dit CALL sur chaque ligne.
Je pense que la commande sed peut le faire, mais je ne la connais pas très bien.
Comment puis-je faire ceci?

3
Incog Nito

Vous pouvez utiliser awk de la manière suivante:

awk -F "CALL" '{print "CALL"$2}' filename 

Le résultat est:

CALL:2017/12/0111:14,00:00:16,008,203,O,208,208,Jon,,,1,,""n/a,0

Détails:

  1. Utilisez le drapeau -F ou --field-separator et définissez CALL comme séparateur de champ.
  2. Imprimer la chaîne "CALL" suivie de
  3. Le deuxième élément de la ligne (quand CALL est le séparateur)

Remarque: vous pouvez rediriger la sortie vers un autre fichier en utilisant:

awk -F "CALL" '{print "CALL"$2}' filename > newfilename

5
Yaron

Avec sed:

sed -e 's/.*CALL:/CALL:/' input.txt > output.txt

Si vous souhaitez modifier le fichier d'entrée à la place, ajoutez l'option -i.

1
David Foerster