Ich habe eine Anforderung, wo in ich den Inhalt einer Datei sagen muss xyz.cfg. Die Datei enthält Werte wie:
%Vor%Ich möchte diesen Inhalt bei Bedarf durch ein Shell-Skript ändern und die Datei speichern. Geänderter Inhalt kann wie folgt aussehen:
%Vor%Wie kann ich dies erreichen, indem ich ein Shell-Skript verwende, indem ich Benutzereingaben mache oder auf andere Weise?
Wie wäre es mit etwas wie:
%Vor% Dabei sind ,
und die Argumente, die an das Skript übergeben werden. Speichern Sie eine Datei wie
script.sh
und stellen Sie sicher, dass sie mit chmod +x script.sh
ausführbar ist. Dann können Sie sie wie folgt ausführen:
Dies gibt Ihnen die grundlegende Struktur, aber Sie sollten über die Validierung von Eingabe ect nachdenken.
Bearbeiten Sie filename.txt direkt und ändern Sie das Wort "etwas" in "anderes"
Ich denke, ich könnte eine GNU-Erweiterung sein, aber wenn es für Sie in Ordnung ist, können Sie sie über find, xargs usw. hinzufügen.
Wenn Sie es in einem Shell-Skript ändern möchten, können Sie Argumente in der Befehlszeile verwenden und auf sie durch die Nummer verweisen, z. B. $ 1
Bearbeiten:
Laut meinem Kommentar ist sudo_O's Antwort genau das Beispiel, das Sie wollen. Was ich hinzufügen werde ist, dass es üblich ist, dass Sie solche Übereinstimmungen mit mehreren Dateien, Unterverzeichnissen usw. machen wollen, also lernen Sie find / xargs kennen, und Sie können beide kombinieren. Ein einfaches Beispiel für das Ändern des Subnetzes in einer Gruppe von .cfg-Dateien könnte sein:
%Vor%Beachten Sie, dass die Argumente -print0 / -0 args nach / xargs suchen (sehr nützlich für Pfade / Dateinamen mit Leerzeichen), und dass Sie wegen der Shell die Fangklammern verlassen müssen (wie in sudos Beispiel)