Supprimer tous les espaces après mot spécifique

J'essaie d'utiliser des expressions régulières pour supprimer tous les espaces blancs après un mot spécifique. L'éditeur que j'utilise est Notepad ++ mais je peux utiliser Unix

Dans ce cas, c'est VALUES que je suis capable de mettre en évidence en exécutant regex \ VALUES, mais je ne sais pas comment supprimer les espaces blancs après cela.

En utilisant sed :

 $ sed 's/VALUES[[:blank:]]*/VALUES/g' input >output 

Cela replacea VALUES suivi de n'importe quel nombre de caractères d'espace (espace ou tabulation) par VALUES , c'est-à-dire qu'il supprimera les espaces.

S'il est important que VALUES soit mis en correspondance en tant que mot complet, c'est-à-dire que whateverVALUES que whateverVALUES VALUES n'est pas adapté, insérez un motif de limite de mot (début de) avant VALUES :

 $ sed 's/[[:<:]]VALUES[[:blank:]]*/VALUES/g' input >output 

Je vais laisser cela pour le rest de cette réponse.

Pour une valeur plus complexe de VALUES , il peut être pratique de ne pas avoir à taper deux fois:

 $ sed 's/\(VALUES\)[[:blank:]]*/\1/g' input >output 

Cela enregistre le model VALUES et le réutilise dans le rlocation.

Si le model VALUES est stocké dans la variable shell $values :

 $ sed "s/\($values\)[[:blank:]]*/\1/g" input >output 

Cela transfère plus ou less directement dans l'éditeur Vim:

 :%s/\(VALUES\)[[:blank:]]*/\1/ 

Comme je n'ai jamais utilisé Notepad ++, je ne peux que deviner comment l'utiliser. On devrait apparemment être en mesure d'appuyer sur Ctrl + H et entrer une search / find et replace le model.

Le motif de search peut être (VALUES)[[:blank:]]* alors que le motif de rlocation peut être $1 . Je n'ai aucun moyen de tester cela, désolé. Si [[:blank:]] ne fonctionne pas, essayez avec [\t ] .

Vous pouvez utiliser \s* (GNU) ou [[:space:]]* (portable) pour capturer les tabs (et tous les autres caractères d'espacement horizontaux et verticaux) ainsi que les espaces.

 $ cat file stuff and VALUES <--tab more VALUES <--three spaces VALUES <--tab, three spaces, tab $ sed 's/VALUES\s*/VALUES/' file stuff and VALUES<--tab more VALUES<--three spaces VALUES<--tab, three spaces, tab 

En utilisant sed :

 sed -e 's/VALUES \+/VALUES/' 

Utiliser + pour faire correspondre tous les espaces après VALUES

Dans le bloc-notes ++, ouvrez la window de search et de rlocation

Dans la zone de search, saisissez (VALUES)\s* (ceci correspond à "VALUES" suivi de toute quantité d'espace). Dans la zone de rlocation, entrez \1 (ceci insère le premier groupe entre parenthèses

Assurez-vous que les expressions régulières sont activées

Cliquez sur replace all pour replace toutes les instances de "VALUES [certains espaces]" par "VALUES"