GNU/Linux >> Tutoriels Linux >  >> Linux

Comment changer un mot dans un fichier avec un script shell Linux

Vous pouvez utiliser sed :

sed -i 's/MyCar on/MyCar off/' path/to/file

Vous ne pouvez le faire qu'avec le shell. Cet exemple utilise une instruction case inutile pour cet exemple particulier, mais je l'ai incluse pour montrer comment vous pouvez incorporer plusieurs remplacements. Bien que le code soit plus volumineux qu'un sed 1 ligne, il est généralement beaucoup plus rapide car il n'utilise que des commandes internes du shell (jusqu'à 20x pour les petits fichiers).

REPLACEOLD="old"
WITHNEW="new"
FILE="tmpfile"
OUTPUT=""
while read LINE || [ "$LINE" ]; do
    case "$LINE" in
        *${REPLACEOLD}*)OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
";;
        *)OUTPUT="${OUTPUT}${LINE}
";;
    esac
done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

pour le cas simple, on pourrait omettre l'instruction case :

while read LINE || [ "$LINE" ]; do
    OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

Remarque :le ...|| [ "$LINE" ]... bit est d'éviter de perdre la dernière ligne d'un fichier qui ne se termine pas par une nouvelle ligne (vous savez maintenant au moins une raison pour laquelle votre éditeur de texte continue d'en ajouter)


Linux
  1. Comment afficher ou modifier l'ACL dans les fichiers Linux

  2. Comment créer un fichier temporaire en script shell ?

  3. Comment changer le shell par défaut sous Linux

  4. Comment écrire un fichier avec C sous Linux ?

  5. Créer des modèles avec Linux dans un script Shell ?

Comment exécuter un script Shell en tant que service Systemd sous Linux

Commande Chmod - Comment modifier les autorisations de fichiers sous Linux

Comment changer la limite de fichiers ouverts sous Linux

Comment stocker une commande Linux en tant que variable dans un script shell

Comment changer le shell par défaut dans le système Linux

Comment changer un shell d'utilisateurs sous Linux