Sie sind nicht angemeldet.

1

22.07.2011, 00:01

awk suchen und ersetzen

Hallo Linux Web,

wollt mich mal kurz vorstellen,
bin der Philipp und denke mal das neuste Mitglied hier im Forum^^
Nutze als OS Win Server 2008 auf meinem PC und habe einen Linux debain server.

Mein problem ist folgendes,

ich habe derzeitig 3 gameserver am laufen. Um genau zu sein sind es minecraft server. Ich habe 2 Server davon an freunde "vermietet", da sie FTP zugriff haben können sie die server.properties ändern, passt mir nicht ganz da darin auch die max-player anzahl definiert wird. Da ich ihnen aber nicht den zugang zu der datei streichen will brauch ich ein Bash-script welches die max-player zahl überschreibt und die IP sowie den Server port, denke mal das es mit awk am schönsten und am einfachsten ist. Wollte mal nachfragen ob einer ausm stehgreif weiß wie ich eine Zeile überschreibe worin eine varieirende Zahl steckt.

Hier mal kurz die properties:

Zitat

#Minecraft server properties
#Thu Jul 21 22:17:35 CEST 2011
level-name=world
allow-nether=true
view-distance=10
spawn-monsters=true
online-mode=true
spawn-animals=true
max-players=20
server-ip=
pvp=true
level-seed=
server-port=25565
allow-flight=false
white-list=false
Mein genaues problem ist jetzt ich möchte "max-players=" zu "max-players=20" ersetzen. Das problem an der sache ist ja das nach dem "max-players=" jede Zahl stehen kann.

Falls einer eine idee hätte wie ich das problem löse würde ich mich über Vorschläge oder scripts freuen.

MFG PHIL

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 330

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

22.07.2011, 02:39

Quellcode

1
sed 's/max-players.*/max-players=20/g'
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

3

22.07.2011, 12:26

Hätte ich vorher gewusst das dieses blöde sternchen den Rest des satzes ersetzt hätte ich mir einige Schreibarbeit sparen können.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

22.07.2011, 23:37

Hätte ich vorher gewusst das dieses blöde sternchen den Rest des satzes ersetzt hätte ich mir einige Schreibarbeit sparen können.


Falsch, dass ist nicht das Sternchen, das ist nur ein Quantor für beliebig viele oder kein Zeichen und der bezieht sich auf den Punkt davor, das ist ein Sonderzeichen, welches für jedes beliebige Zeichen steht. Das sind reguläre Ausdrücke, die in dieser Form in vielen Programmiersprachen unterstützt werden. Das eigentliche Ersetzen löst die sed-Syntax s/reg/string/g aus, s für substitute, reg für den regulären Ausdruck, der den zu substituierenden Teil beschreibt, string, die zeichenfolge, die an die Stelle des Suchtreffers gesetzt wird und g bedeutet, dass das nicht nur einmal sondern bei allen suchtreffern gemacht werden soll.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

5

23.07.2011, 04:14

Wollt mehrere parameter überschreiben, wie muss dann die .sh datei für sed aussehen da

Quellcode

1
sed -i -f test.sed <server.properties >server.properties.new


nicht funktioniert der wirft mir nen fehler aus in Putty

Quellcode

1
2
3
minecraft@s135:~$ sed -i -f reset.sed <server.properties >server.properties.new
sed: no input files
minecraft@s135:~$


bin total planlos wo jetzt der fehler liegt

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 330

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

6

23.07.2011, 12:11

Lass die "<" und ">" weg; die brauchst Du bei "-i" nicht. Also

Quellcode

1
sed -i.new -f reset.sed server.properties
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

Thema bewerten