Je me demandais s’il serait possible de supprimer des colonnes dans un fichier de données qui contiennent des parenthèses pouvant être contenues dans n’importe quelle colonne. Par exemple
... John Doe (Tech Department) 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 (Suspended) Alfred doe 555-555-5555 (Vacation) 09/09/2011 ...
Alors je voudrais que la sortie ressemble à
... John Do 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 Alfred doe 555-555-5555 09/09/2011 ...
Je pensais utiliser un joker pour le texte entre les parenthèses? quelque chose comme /(*)/ ?
Merci pour toute aide,
Tomek
$ cat file John Doe (Tech Department) 09/12/2009 (somethign else) 555-555-5555 Jane Smith 09/12/2009 555-555-5555 (Suspended) Alfred doe 555-555-5555 (Vacation) 09/09/2011 $ awk -vRS=")" -F"(" '{ for(i=1;i<=NF;i+=2) {print $i}}' ORS="" file John Doe 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 Alfred doe 555-555-5555 09/09/2011 $ sed -r 's/\(.[^)]*\)//g' file John Doe 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 Alfred doe 555-555-5555 09/09/2011 $ awk '{gsub(/\(.[^)]*\)/,"") }1' file John Doe 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 Alfred doe 555-555-5555 09/09/2011
Si Perl va bien, vous pouvez faire:
$ cat file John Doe (Tech Department) 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 (Suspended) Alfred doe 555-555-5555 (Vacation) 09/09/2011 $ perl -pe 's/\(.*?\)//g' file John Doe 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 Alfred doe 555-555-5555 09/09/2011
Le plus simple est une commande sed
une ligne:
$ sed -e '/[()]/d' file John Doe 09/12/2009 555-555-5555 Jane Smith 09/12/2009 555-555-5555 Alfred doe 555-555-5555 09/09/2011