Cet article fait partie de la série Unix Sed Tutorial. Dans les articles précédents, nous avons discuté de l'opération d'impression sed, de l'opération de suppression sed et de la recherche et du remplacement sed.
Dans cet article, voyons comment extraire une partie d'un fichier et l'écrire dans un autre fichier à l'aide de sed.
Sed fournit la commande "w" pour écrire les données de l'espace de motif dans un nouveau fichier.
Sed crée ou tronque le nom de fichier donné avant de lire la première ligne d'entrée et écrit toutes les correspondances dans un fichier sans fermer ni rouvrir le fichier.
Syntax: #sed 'ADDERSSw outputfile' inputfilename #sed '/PATTERN/w outputfile' inputfilename
Sed lit une ligne et la place dans un tampon de modèle et écrit le tampon de modèle dans le fichier de sortie donné en fonction des commandes fournies.
Créons d'abord le fichier geekstuff.txt qui sera utilisé dans tous les exemples mentionnés ci-dessous.
# cat thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
Passons en revue quelques exemples de commande d'écriture dans sed.
1. Écrivez la 1ère ligne du fichier
Dans cet exemple, 1 (adresse) fait référence à la première ligne de l'entrée et w écrit le tampon de modèle dans le fichier de sortie "output.txt"
$ sed -n '1w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc.
2. Écrivez la première et la dernière ligne du fichier
Dans cet exemple, 1 et $ font respectivement référence à la première et à la dernière ligne.
$ sed -n -e '1w output.txt' -e '$w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc. 10.Windows- Sysadmin, reboot etc.
3. Écrivez les correspondances de lignes avec le modèle Storage ou Sysadmin
Dans cet exemple, la commande sed écrit les lignes qui correspondent au modèle "Storage" ou "Sysadmin".
$ sed -n -e '/Storage/w output.txt' -e '/Sysadmin/w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc. 5. Storage 10.Windows- Sysadmin, reboot etc.
4. Écrivez les lignes à partir desquelles le motif correspond jusqu'à la fin du fichier
Dans cet exemple, /Storage/,$ représente les correspondances de ligne de Storage à la fin du fichier.
$ sed -n '/Storage/,$w output.txt' thegeekstuff.txt $ cat output.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
5. Écrivez les lignes qui correspondent au motif et les deux lignes suivantes à partir de la correspondance
Dans cet exemple, la commande send écrit les correspondances de ligne pour "Storage" et deux lignes à côté.
$ sed -n '/Storage/,+2w output.txt' thegeekstuff.txt $ cat output.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available)