2017-10-20 21 views
0

Je souhaite insérer une chaîne entre les symboles, mais le symbole est continu. Comme ';;;;;;;;;;' Je peux utiliser echo ';;;;;;;;;;' | sed 's/\;\;/\;na\;/g', mais la sortie sera ;na;;na;;na;;na;;na;.comment insérer une chaîne en continu dans Linux

Ce que je veux, c'est ;na;na;na;na;na;na;na;na;na;na;.

[Mise à jour plus question spécifique]

Comme 'xx;;string;;;string;;string;;;;'
Comment puis-je transformer en xx;na;string;na;na;string;na;string;na;na;na;

Je veux tout l'espace vide entre ";;" d'avoir en elle na . Y a-t-il une commande qui fonctionnera? Existe-t-il une commande qui fonctionnera?

Répondre

2

Une autre approche awk.

awk '{i=0; while(i++<2)gsub(/;;/,";na;")}1' 

Ou en utilisant sed:

sed ':l;s/;;/;na;/;tl' 
+1

Merci pour la réponse – sowrdking

+0

Pour le premier, il aura addtion ";" à la fin. Le deuxième est merveilleux. – sowrdking

+0

@sowrdking c'est parce que vous avez révisé votre question et que cela fonctionne seulement à ce moment-là. maintenant j'ai enlevé l'ancienne commande et ne garde que la commande qui résout votre question actuelle. –

0

Pourquoi ne pas le faire ...

$ echo ';;;;;;;;;;' | sed 's/\;/\;na/g' 
;na;na;na;na;na;na;na;na;na;na 

Si vous avez besoin de fuite; ne ...

$ echo `echo ';;;;;;;;;;' | sed 's/\;/\;na/g'`\; 
;na;na;na;na;na;na;na;na;na;na; 
3

Essayez cette méthode sed aussi

sed 's/;/&na/g;s/$/;/' <<< ';;;;;;;;;;' 

Sortie:

;na;na;na;na;na;na;na;na;na;na; 

Explication:

s/;/&na/g - ap Pend na dans chaque ;
s/$/;/ - ajouter ; en fin de la ligne, de sorte qu'il remplira le requirment

+0

Hah, vous êtes juste un peu plus vite ... –

+0

Oui, merci:) - – Kalanidhi

+0

Merci pour la réponse – sowrdking

0

utilisant awk

$ echo "xx;;string;;;string;;string;;;;" | awk -v FS="" '{ for(i=1; i<=NF; i++) if ($i==";" && $(i-1)==";") printf "na"$i; else printf $i; printf RS}' 
xx;na;string;na;na;string;na;string;na;na;na; 
+0

merci pour votre aide – sowrdking