GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ändern des Inhalts einer Datei durch Shell-Skript

*

#! /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

*

Ich hoffe, dass dies für Anfänger einfacher zu verstehen ist


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

Bearbeitet filename.txt an Ort und Stelle und ändert das Wort „something“ in „other“

Ich denke, dass -i eine GNU-Erweiterung sein könnte, aber wenn es für Sie in Ordnung ist, können Sie es über find, xargs etc. hinzufügen.

Wenn Sie es in einem Shell-Skript ändern möchten, können Sie Argumente in der Befehlszeile nehmen und auf sie mit einer Nummer verweisen, z. B. $1

Bearbeiten:

Laut meinem Kommentar ist die Antwort von sudo_O unten genau das Beispiel, das Sie wollen. Was ich hinzufügen möchte, ist, dass Sie solche Übereinstimmungen häufig mit mehreren Dateien durchführen möchten, die sich über Unterverzeichnisse usw. erstrecken. Lernen Sie also find/xargs kennen, und Sie können die beiden kombinieren. Ein einfaches Beispiel für das Ändern des Subnetzes in einer Reihe von .cfg-Dateien könnte sein:

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

Beachten Sie die -print0/-0-Argumente für find/xargs (sehr nützlich für Pfade/Dateinamen mit Leerzeichen) und dass Sie die einfangenden Klammern wegen der Shell mit Escapezeichen versehen müssen (dasselbe gilt für das Beispiel von sudo)


Wie wäre es mit etwas wie:

#!/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

Wobei $1,$2 und $3 sind die Argumente, die an das Skript übergeben werden. Speichern Sie es in einer Datei wie script.sh und stellen Sie sicher, dass es mit chmod +x script.sh ausführbar ist dann können Sie es wie folgt ausführen:

$ ./script.sh 127.8.7.7 7822 xyz_ITR4

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

Dies gibt Ihnen die Grundstruktur, aber Sie möchten über die Validierung von Eingaben usw. nachdenken.


Linux
  1. Einfügen mehrerer Zeilen in eine Datei nach einem bestimmten Muster mit Shell-Skript

  2. Bash-Skript fügt Text an die erste Zeile einer Datei an

  3. Nur verschieben, wenn die Datei in einem Shell-Skript vorhanden ist

  4. So führen Sie eine Datei ohne die Erweiterung .sh in der Shell aus

  5. Templating mit Linux in einem Shell-Skript?

Shell-Skript:Bedingung „wenn Datei nicht verwendet wird“?

Shell - Variableninhalte in eine Datei schreiben

So führen Sie ein Shell-Skript beim Start aus

Kopieren und überschreiben Sie eine Datei im Shell-Skript

Was ist eine .sh-Datei?

Kann eine .sh-Datei Malware sein?