J'ai une tâche d'édition d'un fichier texte, appelé LOLOLOL
.
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY bob bob bob Gary gary
the the bird in the the bush!
LOL MATE!
J'ai un fichier de script bash appelé lolz.script
:
#!/bin/bash
sed '1i Hee hee hee\n Ho Ho Ho\n' $1
sed 's/bob/Bob/g' $1
en exécutant .\lolz.script LOLOLOL
sur la ligne de commande, je reçois plusieurs itérations de la variable LOLOLOL
text - précisément, une itération par commande.
Par exemple, la sortie affiche les première et deuxième commandes sed (appliquées à chacune) ici:
*Hee Hee Hee
Ho Ho Ho*
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY bob bob bob Gary gary
the the bird in the the bush!
LOL MATE!
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY *Bob Bob Bob* Gary gary
the the bird in the the bush!
LOL MATE!
Considérant ce que je veux la sortie:
*Hee Hee Hee
Ho Ho Ho*
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY Bob Bob Bob Gary gary
the the bird in the the bush!
LOL MATE!
Comme vous pouvez le constater, chaque commande sed est appliquée indépendamment à chaque itération d'impression du fichier texte. J'ai besoin que toutes les commandes sed soient appliquées ensemble.
Notez comment l'en-tête souhaité de la première commande sed est appliqué à la première itération, alors que ce n'est pas le cas à la seconde (mais le changement bob
à Bob
est).
Pourquoi est-ce arrivé et que puis-je faire pour que les commandes d'un script soient cumulées dans un fichier texte? Cela ne semblait pas se produire avec le script awk
de même format.
Simplement: vous appelez sed
deux fois.
Si vous exécutez ces commandes dans un terminal les unes après les autres, vous obtiendrez deux jeux de sortie. Votre script fait juste la même chose dans son propre shell.
Vous pouvez utiliser {}
pour regrouper des commandes et les insérer sur une nouvelle ligne, ou bien ;
pour que toutes les commandes agissent sur le fichier de manière cumulative, en appelant sed une seule fois:
#!/bin/bash
sed '{
1i Hee hee hee\n Ho Ho Ho\n
s/bob/Bob/g
}' "$1"
sortie de ./script file
Hee hee hee
Ho Ho Ho
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY Bob Bob Bob Gary gary
the the bird in the the bush!
LOL MATE!