J'ai un fichier délimité par des tabulations comme:
name1 verb1 name2 verb2 etc...
Je veux supprimer la deuxième colonne. J'ai essayé de modifier l'une de ces réponses , mais n'étant pas familier avec sed
et awk
, je ne pouvais pas.
Quelqu'un peut-il m'aider?
Dans vim, vous devriez pouvoir utiliser la commande
:%s/\t[^\t]*//
(remplacer TAB suivi de zéro ou plusieurs occurrences de tout caractère sauf TAB avec rien). Si votre fichier ne contient que deux colonnes, vous pouvez utiliser un :%s/\t.*
ou :%s/\t.*$
légèrement plus simple qui remplace le premier. TAB et any caractères suivants jusqu'à la fin de la ligne.
La réponse acceptée est beaucoup plus élégante que celle-ci (je l’y ai voté!) Mais si vous ne vous en souvenez pas, vous pouvez utiliser vim
--- mode bloc visuel directement. Ouvrez vim et allez (mode normal) au premier coin de la colonne, comme ceci:
Tapez CTRL-V
et vous pouvez déplacer le curseur pour sélectionner la colonne, c'est à mi-chemin:
Pour aller à la fin, appuyez sur G
:
le bloc semble cassé parce que nous sommes sur la dernière ligne qui est vide; montez simplement d'une ligne (avec la flèche vers le haut ou k
) pour la revoir ...:
Maintenant, vous appuyez simplement sur x
pour supprimer le bloc:
Je voudrais utiliser cut
pour cela
cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt
Vous pouvez également utiliser cela comme filtre dans vim (cela remplacera toutes les lignes du fichier; vous pouvez également utiliser (par exemple) 2,9
au lieu de %
pour traiter les lignes 2 à 9, ou sélectionner les lignes souhaitées avec V
). :
:%!cut -f1,3-
-f1,3-
signifie 'imprimer le champ un, suivi du champ trois et de tous les champs jusqu'à la fin de la ligne'. Par défaut, cut
utilise un onglet comme délimiteur; si vous avez besoin de quelque chose d'autre, utilisez l'option -d
(voir man cut
).
Vous pouvez essayer soit:
:%norm WdW
ou manuellement en utilisant le mode visuel:
Pour le faire sur place à partir de la ligne de commande, essayez:
$ ex +':exe ":%norm f\<Tab>dE"' -scx file
Connexes: Comment écrire littéralement pour la touche Tab utiliser pour le mouvement?
Voir également: