Je débogue un script Shell et j'essaie de découvrir la tâche effectuée par la commande suivante:
sed -i '1,+999d' /home/org_user/data.txt
J'ai besoin de changer cette commande car elle échoue avec l'erreur suivante:
illegal option sed -i
Mais avant de changer, j'ai besoin de comprendre le fonctionnement du BAU.
Appréciez toutes les contributions à cet égard.
Une utilisation applicable de ceci est la suivante. Supposons que vous ayez le fichier suivant file.txt
:
1, 2, 6, 7, "p"
Nous voulons remplacer "p" par 0.
sed 's/"p"/0/g' file.txt
L'utilisation de ce qui précède imprime simplement la sortie en ligne de commande.
Vous penseriez pourquoi ne pas simplement rediriger ce texte dans le fichier comme ceci:
sed 's/"p"/0/g' file.txt > file.txt
Malheureusement à cause de la nature des redirections ce qui précède produira simplement un fichier vierge.
Au lieu de cela, un fichier temporaire doit être créé pour la sortie qui écrase plus tard le fichier d'origine quelque chose comme ceci:
sed 's/"p"/0/g' file.txt > tmp.txt && mv tmp.txt file.txt
Au lieu de faire la longue solution de contournement ci-dessus, l'option d'édition en place de sed avec -i permet une commande beaucoup plus simple:
sed -i 's/"p"/0/g' file.txt
Si -i
option donnée, sed
édition des fichiers en place.
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
de sed (1)
http://www.gnu.org/software/sed/manual/sed.html#Introduction
Certaines implémentations de sed
ne prennent pas en charge le -i
option. Ce qu'il fait peut être simulé par
sed -e '...' file > tmp
mv tmp file