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"