Je voudrais extraire des données d'un texte avec Vim ..
Les données sont de ce type: Les données que j'ai besoin pour extraire sont contenues dans: titre = "(168,72)". Je pense qu'à utiliser Vim pour tout d'abord supprimer tout avant titre = " em> .. mais je ne suis pas vraiment un gourou de regex. . Donc je vous demande: si quelqu'un a un indice: s'il vous plaît dites-moi :) p> p>
En particulier, je suis intéressé à n'exprimer que ces coordonnées. P>
4 Réponses :
Ceci remplacera chaque ligne avec une liste délimitée par tabulation des coordonnées par ligne:
:%s/.* title="(\(\d\+\),\(\d\+\))".*/\1\t\2
Vous pouvez tout correspondre à tout le titre = () et supprimer tout ce que ceci:
:%s,.*title="(\(.*\))".*,\1,
Si vous souhaitez une solution ad hoc pour ce cas ponctuel, il peut être plus rapide de sélectionner simplement un bloc visuel à l'aide de Ctrl-V KBD>. Cela vous permettra de sélectionner une colonne de texte arbitraire (dans votre cas, la colonne contenant title = "(x, y)" code>), qui peut ensuite être copiée comme d'habitude en utilisant
y code>. p>
Ouais une série de cerveaux rapide Je trouve mon auto utilisation est: ^ vgx ....... code> juger le nombre de répétitions (
. Code>) visuellement - pragmatique mais fonctionne Bien 80% des cas
Cette tâche peut être obtenue avec une solution beaucoup plus simple et avec quelques frappes de frappe à l'aide de la commande normale:
:5,10normal df(f)D
Façon intéressante de faire cela sans macros
La commande normale est un outil très puissant. C'est presque une "macro une fois".
Comme une autre utilisation de VIM posté de l'expression de flux est très puissante. Ces manipulateurs de flux sont également disponibles avec Whit SED (presque la même chose que le
:% code>). Si vous souhaitez en savoir plus sur ces expressions, consultez ce Introduction SED .