Maison > Questions et réponses > le corps du texte
Description du problème
Un fichier plus volumineux doit être traité et le contenu avant que la chaîne correspondante dans chaque ligne ne soit supprimé. Le format du contenu du fichier est le suivant :
aaa dd kk segmentfault=1098-0987-3jlc ok=okj hello=0cvqa
12jk od=kk segmentfault=1jj8-lk87-oplc suiji=che shachu=keng
pppp=dd bbo;=9as segmentfault=0876-oj87-3pac zifu=ka neirong=xia
Il est prévu que le contenu avant que segmentfault apparaisse pour la première fois dans chaque ligne puisse être supprimé jusqu'au début de la ligne. Les résultats de traitement attendus sont les suivants
.
segmentfault=1098-0987-3jlc ok=okj hello=0cvqa
segmentfault=1jj8-lk87-oplc suiji=che shachu=keng
segmentfault=0876-oj87-3pac zifu=ka neirong=xia
La solution actuelle
utilise des macros pour exécuter
qa ---开启宏录制
/resourceId ---随意操作
d0 ---随意操作,删除至行首
j ---随意操作,跳转到下一行
q ---退出宏
1000000@a ---执行1000000次
Inconvénients : faible efficacité, extrêmement chronophage
Solution attendue
Attendez-vous à une édition directe des colonnes (ctrl + v) pour supprimer la position correspondante de chaque ligne au début de la ligne.
Comment y parvenir ?
曾经蜡笔没有小新2017-05-16 16:36:34
Essayez le remplacement régulier et la modification des colonnes. Vos mots clés sont dans des positions différentes et ne peuvent pas être modifiés directement
.:%s/^.*segmentfault/segmentfault/g
仅有的幸福2017-05-16 16:36:34
@ixx L'idée est bonne, les expressions régulières
mais il existe une solution plus simple
:%s/^.*\zesegmentfault//g
ze
Le mode de correspondance des marques est terminé
淡淡烟草味2017-05-16 16:36:34
Je suppose que l'auteur de la question souhaite utiliser le mode colonne de vim (Ctrl-v), puis sélectionner plusieurs lignes pour faire correspondre la partie située avant le segment de mot.
Mais cela ne fonctionne pas, car cela ne peut pas être fait
1) En mode colonne, la correspondance est mieux effectuée au début ou à la fin de la ligne, formant des blocs de correspondance irréguliers ;
2) Le s du début de la ligne jusqu'au segment de la première ligne est de 3 W, tandis que le s des 2ème et 3ème lignes jusqu'au segment est de 2 W. Ce n'est pas facile à faire d'un coup. (Pour la même raison, remplacer W par w ne fonctionnera pas non plus)
En mode colonne, le principe le plus approprié pour le traitement est que le texte est relativement bien organisé ou peut être facilement positionné .
==========
Une autre réponse disait que l'utilisation d'expressions régulières pour faire correspondre et remplacer est très utile.