GNU/Linux >> Tutoriels Linux >  >> Linux

Modification du contenu d'un fichier via un script shell

*

#! /bin/sh
file=xyz.cfg
addr=$1
port=$2
username=$3
sed -i 's/address=.*/address='$addr'/' $file
sed -i 's/port=.*/port='$port'/' $file
sed -i 's/username=.*/username='$username'/' $file

*

J'espère que celui-ci sera plus simple à comprendre pour les débutants


sed -i 's/something/other/g' filename.txt 

Modifiera filename.txt sur place et changera le mot "quelque chose" en "autre"

Je pense que -i peut être une extension GNU, mais si cela vous convient, vous pouvez l'ajouter via find, xargs, etc.

Si vous souhaitez le modifier dans un script shell, vous pouvez prendre des arguments sur la ligne de commande et y faire référence par un numéro, par exemple $1

Modifier :

Selon mon commentaire, la réponse de sudo_O ci-dessous est exactement l'exemple que vous voulez. Ce que j'ajouterai, c'est qu'il est courant que vous souhaitiez faire de telles correspondances avec plusieurs fichiers, couvrant des sous-répertoires, etc., alors apprenez à connaître find/xargs, et vous pouvez combiner les deux. Un exemple simple de changement de sous-réseau dans un groupe de fichiers .cfg pourrait être :

find -name '*.cfg' -print0 | xargs -0 -I {} sed -ie 's/\(192.168\)\.1/\1\.7/' {}

Notez les arguments -print0/-0 pour find/xargs (très utile pour les chemins/noms de fichiers avec des espaces), et que vous devez échapper les crochets de capture à cause du shell (idem dans l'exemple de sudo)


Que diriez-vous de quelque chose comme :

#!/bin/bash

addr=$1
port=$2
user=$3

sed -i -e "s/\(address=\).*/\1$1/" \
-e "s/\(port=\).*/\1$2/" \
-e "s/\(username=\).*/\1$3/" xyz.cfg

$1,$2 et $3 sont les arguments passés au script. Enregistrez-le dans un fichier tel que script.sh et assurez-vous qu'il est exécutable avec chmod +x script.sh alors vous pouvez l'exécuter comme :

$ ./script.sh 127.8.7.7 7822 xyz_ITR4

$ cat xyz.cfg
group address=127.8.7.7
port=7822
Jboss username=xyz_ITR4

Cela vous donne la structure de base mais vous voudriez penser à valider l'entrée ect.


Linux
  1. Comment ajouter des données au tampon dans le script shell ?

  2. Exécuter un fichier de script sur Ssh via Sudo ?

  3. Exécuter le même script sur plusieurs serveurs via Ssh ?

  4. Script Shell :Condition "si le fichier n'est pas utilisé" ?

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

Comment créer un fichier temporaire en script shell ?

Comment vérifier la sous-chaîne dans Shell Script Bash?

Shell - Écrire le contenu d'une variable dans un fichier

Comment exécuter un script shell au démarrage

Copier et écraser un fichier dans un script shell

Qu'est-ce qu'un fichier .sh ?