2009-12-19 4 views

Répondre

3

En mode commande, appuyez sur Ctrl - v pour passer en mode visuel, vous pouvez bloquer-sélectionner la colonne à l'aide des touches de déplacement du curseur. Vous pouvez ensuite yank et le mettre ou le supprimer ou tout ce dont vous avez besoin en utilisant les commandes et les frappes vim appropriées.

+0

Ceci est une grande commande que j'ai tendance à oublier facilement –

1

si vous voulez supprimer quelque chose, utilisez :%s/pattern//

modèle

ne peut pas être une commande, il est surtout une expression régulière. exprimant 2ème champ dans l'expression régulière n'est pas très facile

si vous voulez supprimer 2ème champ, vous pouvez filtrer le texte par coupe utilitaire

:%! cut -d ' ' -f 2 --complement 
0

vous pouvez appuyer sur , puis appuyez sur w à passez à votre 2e colonne et faites cw.

2

Vous n'avez pas besoin d'utiliser awk, même si la deuxième colonne n'est pas une région rectangulaire. Utiliser une substitution:

:%s/ \w\+// 

La deuxième colonne est composée d'au moins un des caractères de mot (\ w \ +) séparés par des blancs. Le remplacement est un blanc. Celui-ci est pour une gamme sélectionnée de lignes:

:'<,'>s/ \w\+// 
0

Vous pouvez supprimer une colonne donnée dans un fichier uniquement à partir de vim. En mode commande, utilisez la commande suivante pour supprimer la colonne n:

:%s/\(.\{n-1}\).\{1}\(.*$\)/\1\2/g 
16

Bien qu'ils abordent probablement la question de l'affiche originale, aucune de la réponse aborde la question annoncée dans le titre de la question. Ma proposition de supprimer la première ligne de la question et de la réitérer comme "Suppression d'une colonne dans vim" ayant été rejetée à l'unanimité, voici une solution pour les personnes arrivant là-bas en cherchant réellement cela.

Suppression d'une colonne (ici la seconde, comme dans l'exemple de l'OP pseudocode) avec awk dans vim:

:%!awk '{$2=""; print $0}' 

Bien sûr, cela fonctionne aussi pour une partie du fichier - par exemple pour les lignes 10 à 20:

:10,20!awk '{$2=""; print $0}' 

En ce qui concerne « [course] awk dans la sélection de Vim de la recherche », pas sûr que vous pouvez faire exactement cela, mais de toute façon la recherche et la substitution est un travail facile pour awk, sinon son but principal.Le paragraphe suivant remplace « modèle » par « betterpattern » dans la deuxième colonne si elle correspond à:

:%!awk '$2~"pattern" {gsub("pattern","betterpattern",$2)} 

Notez que l'opérateur NOT exige échapper (\! au lieu de !). Ce qui suit remplace la valeur dans la deuxième colonne par son incrément de 10 si elle correspond à « nombre » et de laisser d'autres lignes inchangées:

:%!awk '$2~"number" {gsub($1,$1+10)} $2\!~"number" {print $0}' 

En dehors de cet endroit, il est juste awk syntaxe.

+2

Je suis d'accord que la question devrait être renommée, ou cette réponse votée la plus correcte. – AzP

Questions connexes