Je comprends que sed
c'est une commande pour manipuler un fichier texte.
D'après ma recherche sur Google, il semble que cela -i
signifie effectuer l'opération sur le fichier lui-même, est-ce correct?
Et alors '1d'
?
Je comprends que sed
c'est une commande pour manipuler un fichier texte.
D'après ma recherche sur Google, il semble que cela -i
signifie effectuer l'opération sur le fichier lui-même, est-ce correct?
Et alors '1d'
?
Réponses:
Dans sed
:
-i
L'option modifiera le fichier d'entrée sur place
'1d'
supprimera la première ligne du fichier d'entrée
Exemple:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
Notez que, la plupart du temps, c'est une bonne idée de faire une sauvegarde tout en utilisant l' -i
option afin que vous ayez le fichier d'origine sauvegardé en cas de changement inattendu.
Par exemple, si vous le faites:
sed -i.orig '1d' file.txt
le fichier d'origine sera conservé tel quel file.txt.orig
et le fichier modifié le sera file.txt
.
sed '1d' file.txt
Imprime le contenu de file.txt
; à l'exclusion de la première ligne; à la sortie standard.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Imprime le contenu de file.txt
; à l'exclusion de la première ligne; retour dans file.txt
; écraser l'original.
sed -i.back '1d' file.txt
Crée une sauvegarde de l'original (as file.txt.back
), avant d'apporter des modifications. Sauf avec FreeBSD sed
, le suffixe (ici .back
) doit être attaché à l' -i
option (dans le même argument, pas d'espace entre -i
et .back
).
sed '2d' file.txt
Imprime le contenu de file.txt
; à l'exclusion de la deuxième ligne; à la sortie standard.
(La spécification d'un nombre supprimera la ligne correspondante).
Également compatible avec le -i
drapeau.
sed '1!d' file.txt
Imprime le contenu de file.txt
; excluant tout sauf la première ligne; à la sortie standard.
(En d'autres termes, seule la première ligne est imprimée).
Également compatible avec le -i
drapeau.
sed '$d' file.txt
Imprime le contenu de file.txt
; à l'exclusion de la dernière ligne; à la sortie standard.
Également compatible avec le -i
drapeau.
En sed -h
avoir:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
et "effectuer l'opération sur le fichier lui-même." c'est absolu.
Et a man
déclaré: «Sed est un éditeur de flux. Un éditeur de flux est utilisé pour effectuer des transformations de texte de base sur un flux d'entrée (un fichier ou une entrée à partir d'un pipeline). '
comme votre question,
sed -i '1d' file_name
signifie: supprimer la première ligne du fichier "file_name"
à l'endroit et sauvegarder dans le fichier. (tout comme modifier le fichier et supprimer directement la première ligne.)
-i
pour voir ce qui se passe en premier, puis utiliser-i
pour modifier réellement le fichier.