Je veux supprimer un motif avec sed, seulement à la deuxième occurrence. Voici ce que je veux, supprimer un motif mais sur la deuxième occurrence.Sed remplacer à la deuxième occurrence
Ce qui est dans le file.csv:
a,Name(null)abc.csv,c,d,Name(null)abc.csv,f
a,Name(null)acb.csv,c,d,Name(null)acb.csv,f
a,Name(null)cba.csv,c,d,Name(null)cba.csv,f
sortie souhaitée:
a,Name(null)abc.csv,c,d,Name,f
a,Name(null)acb.csv,c,d,Name,f
a,Name(null)cba.csv,c,d,Name,f
C'est ce que j'ai essayé:
sed -r 's/(\(null)\).*csv//' file.csv
Le problème ici est que l'expression régulière est trop gourmand, mais je ne peux pas faire est d'arrêter. J'ai aussi essayé, de sauter la première occurrence de « null »:
sed -r '0,/null/! s/(\(null)\).*csv//' file.csv
aussi essayé mais le regex gourmand est toujours le problème.
sed -r 's/(\(null)\).*csv//2' file.csv
J'ai lu que ?
peut faire la regex « paresseux », mais je ne peux pas faire l'entraînement.
sed -r 's/(\(null)\).*?csv//' file.csv
Si vous avez 3 '' (null) '' ou plus et que vous voulez toujours supprimer uniquement la 2ème occurrence, hink il serait plus facile de faire avec perl, en utilisant '. *?' au lieu de '. *'. –