Comment insérer une ligne à l'aide de sed avant un modèle et après un numéro de ligne?
Comment insérer une ligne dans un fichier à l'aide de sed
avant un modèle et après un numéro de ligne? Et la façon d'utiliser le même en script shell?
Cela permet d'insérer une ligne avant chaque ligne avec le motif :
sed '/Sysadmin/i \ Linux Scripting' filename.txt
Et cela change cela en utilisant le numéro de ligne de la gamme :
sed '1,$ s/A/a/'
Donc maintenant comment utiliser ces deux (que je ne pouvais pas) pour insérer une ligne dans un fichier à l'aide de sed
avant un modèle et après un numéro de ligne ou une autre approche?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez écrire un script sed fichier et utiliser:
Ou vous pouvez utiliser (ou plusieurs)
-e 'command'
options:Si vous voulez ajouter quelque chose après une ligne, puis:
sed -i '22a Text I Added at Line 22' test.txt
sed
et signifie également que vous vouliez remplacer le fichier d'origine. Ceux qui n'étaient pas nécessairement partie des exigences d'origine. Ce n'est pas mal; juste (un peu) différent. À l'aide de BSDsed
, vous devez utiliser-i ‘’
au lieu de simplement-i
, vous pensez ne pas être en mesure de tricher sur les POSIX spec et omettre la barre oblique inverse de saut de ligne.Je suppose que vous voulez insérer la ligne avant d'un modèle uniquement si le numéro de ligne courant est supérieure à une certaine valeur (c'est à dire si le modèle apparaît devant le numéro de la ligne, ne rien faire)
Si vous n'êtes pas lié à
sed
:sed
- probablement pas tout à fait impossible, mais impliquant imbriqués les commandes, etc.voici un exemple de la façon d'insérer une ligne avant une ligne dans un fichier:
fichier d'exemple test.txt :
script:
fichier de sortie de test.txt.2
NB! notez que la dsi est comme le début d'une substitution d'un saut de ligne à la n de l'espace - c'est nécessaire, sinon fichier résultant aura une ligne vide au début
Le script détecte que la ligne contenant "bonjour la ligne 2", puis il insère une nouvelle ligne au-dessus -- "bonjour nouvelle ligne"
explication des commandes sed:
Simple? À partir de la ligne 12 jusqu'à la fin:
sed
; il ne fonctionne pas avec toutes les autres variantes. J'ai testé avec le BSD/macOS variante desed
et il produitLinux ScriptingnSysadmin
par exemple. J'ai aussi testé le même script avec GNUsed
et il a travaillé — tous j'ai changé, c'est le chemin d'accès à la commande exécutée.