Pour insérer du texte avant un modèle, vous devez remplacer le modèle de l'espace dans la soute de l'espace avant de lire dans le fichier. Par exemple:
sed "/pattern/{
h
r $scriptPath/adapters/default/permissions.xml
g
N
}""$manifestFile"
Le script doit être entre guillemets doubles, sinon $scriptPath ne sera pas élargi. Pourriez-vous expliquer pourquoi est N nécessaire à la fin? La r de la commande que les files d'attente de lecture pour l'insertion dans le flux de sortie. Il ne fait pas lire quoi que ce soit jusqu'à la fin du cycle ou lors de la prochaine ligne est lue. Sans N le fichier ne serait pas insérée jusqu'à ce que après le modèle de l'espace a été imprimé, en les faisant fonctionner comme un ajout plutôt que d'un insert. C'est très non intuitive. Fonctionne très bien pour moi merci beaucoup Semble sed est très pointilleux avec le 'r' de la commande. Selon linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/...: "Tout de caractères supplémentaires avant ou après le nom de fichier sont considérés comme une partie du nom de fichier." J'ai essayé r someFile.txt # insert content of ... et il a échoué en silence. Cela fonctionne bien aussi longtemps que pattern est pas sur la dernière ligne.
CodeGnome la solution ne fonctionne pas, si le motif est sur la dernière ligne..
J'ai donc utilisé 3 commandes.
sed -i '/pattern/i\
INSERTION_MARKER
' $manifestFile
sed -i '/INSERTION_MARKER/r $scriptPath/adapters/default/permissions.xml' $manifestFile
sed -i 's/INSERTION_MARKER//' $manifestFile
Pour insérer du texte avant un modèle, vous devez remplacer le modèle de l'espace dans la soute de l'espace avant de lire dans le fichier. Par exemple:
La r de la commande que les files d'attente de lecture pour l'insertion dans le flux de sortie. Il ne fait pas lire quoi que ce soit jusqu'à la fin du cycle ou lors de la prochaine ligne est lue. Sans N le fichier ne serait pas insérée jusqu'à ce que après le modèle de l'espace a été imprimé, en les faisant fonctionner comme un ajout plutôt que d'un insert. C'est très non intuitive.
Fonctionne très bien pour moi merci beaucoup
Semble sed est très pointilleux avec le 'r' de la commande. Selon linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/...: "Tout de caractères supplémentaires avant ou après le nom de fichier sont considérés comme une partie du nom de fichier." J'ai essayé
r someFile.txt # insert content of ...
et il a échoué en silence.Cela fonctionne bien aussi longtemps que
pattern
est pas sur la dernière ligne.OriginalL'auteur Todd A. Jacobs
Juste enlever
i\\
.Exemple:
OriginalL'auteur Igor Chubin
J'ai eu quelque chose comme cela à l'aide de awk. Semble laid, mais a fait le tour de mon test:
commande:
test.txt:
insert.txt:
de sortie:
OriginalL'auteur bcelary
CodeGnome la solution ne fonctionne pas, si le motif est sur la dernière ligne..
J'ai donc utilisé 3 commandes.
OriginalL'auteur Sinhyeok