GNU/Linux >> Znalost Linux >  >> Linux

Změna obsahu souboru pomocí shell skriptu

*

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

*

Doufám, že toto bude pro začátečníky srozumitelnější


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

Upraví soubor filename.txt na místě a změní slovo 'něco' na 'jiné'

Myslím, že -i může být rozšíření GNU, ale pokud vám to vyhovuje, můžete ho přidat pomocí find, xargs atd.

Pokud byste to chtěli změnit v shell skriptu, můžete vzít argumenty na příkazovém řádku a odkazovat na ně číslem, např. $1

Upravit:

Podle mého komentáře je odpověď sudo_O níže přesně tím příkladem, který chcete. Co dodám, je, že je běžné, že budete chtít provádět takové shody s více soubory, přes podadresáře atd., takže se seznamte s find/xargs a můžete obojí zkombinovat. Jednoduchý příklad změny podsítě v hromadě souborů .cfg může být:

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

Všimněte si argumentů -print0/-0 pro nalezení/xargs (velmi užitečné pro cesty/názvy souborů s mezerami) a že musíte uniknout zachycovacím závorkám kvůli shellu (stejné jako v příkladu sudo)


Co třeba něco jako:

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

Kde $1,$2 a $3 jsou argumenty předané skriptu. Uložte jej do souboru, například script.sh a ujistěte se, že je spustitelný s chmod +x script.sh pak to můžete spustit jako:

$ ./script.sh 127.8.7.7 7822 xyz_ITR4

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

To vám dává základní strukturu, kterou byste však chtěli přemýšlet o ověření vstupu atd.


Linux
  1. Shell skript pro přesun nejstarších souborů?

  2. Jak vytvořit dočasný soubor ve skriptu Shell?

  3. Jak připojit data do vyrovnávací paměti ve skriptu Shell?

  1. Spuštění souboru skriptu přes Ssh přes Sudo?

  2. Spustit stejný skript na několika serverech přes Ssh?

  3. Shell - Zápis proměnného obsahu do souboru

  1. Zkopírujte a přepište soubor ve skriptu shellu

  2. Vložit více řádků do souboru po zadaném vzoru pomocí shell skriptu

  3. bash skript připojí text k prvnímu řádku souboru