Comment pouvez-vous exécuter AWK dans la sélection de la recherche par Vim?Exécuter AWK dans la recherche de Vim
Mon pseudo-code
%s/!awk '{ print $2 }'//d
Je suis en train de supprimer la colonne donnée dans le fichier.
Comment pouvez-vous exécuter AWK dans la sélection de la recherche par Vim?Exécuter AWK dans la recherche de Vim
Mon pseudo-code
%s/!awk '{ print $2 }'//d
Je suis en train de supprimer la colonne donnée dans le fichier.
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.
si vous voulez supprimer quelque chose, utilisez :%s/pattern//
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
vous pouvez appuyer sur , puis appuyez sur w à passez à votre 2e colonne et faites cw.
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\+//
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
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.
Je suis d'accord que la question devrait être renommée, ou cette réponse votée la plus correcte. – AzP
Ceci est une grande commande que j'ai tendance à oublier facilement –