2009-03-25 9 views
1

Ce que cette question n'est pas demander est comment ajouter une nouvelle ligne au-dessous ou au-dessus de chaque ligne qui correspond à un modèle.Shell: ajouter une nouvelle ligne entre une ligne de texte donnée

Ce que j'essaye de faire est d'ajouter une nouvelle ligne entre un modèle qui existe sur une ligne.

Voici un exemple.

avant:

Lundi: 8 heures-22 heures

après:

Lundi:

8 10pm

Dans ce cas, insérez une nouvelle ligne après chaque cycle 'Lundi'.

Répondre

5
sed 's/Monday:/&\n/g' 
+0

Je vois ce que vous avez fait là-bas. – strager

6
echo 'Monday:8am-10pm' | sed -e 's/^Monday:/&\n/' 

Pour les caractères jusqu'à ':':

echo 'Monday:8am-10pm' | sed -e 's/^[^:]*:/&\n/' 
+0

Cette réponse est plus complète - J'ai révisé la mienne pour utiliser le caractère & après l'avoir posté. – jthompson

2
sed 's/Monday:/&\n\n/g' 

va les remplacer (en supposant que vous souhaitez 2 sauts de ligne comme indiqué ci-dessus)

+0

Les 2 nouvelles lignes étaient une erreur de ma part. Je voulais dire que ce soit juste une nouvelle ligne. Mais vous auriez raison si c'était le cas. Merci. – Dennis

+0

Dans ce cas, vous avez accepté la bonne réponse :) –

0

En utilisant sed:

echo "Monday:8am-10pm" | sed -e 's/:/:\n\n/' 
+0

On dirait que vous avez un peu bousillé votre ligne. – strager

+0

ouais, réparé maintenant. – vezult

Questions connexes