Wie entferne ich eine Zeichenfolge über Shell-Skripte aus einer Datei?

9

Ich versuche, Zeichenfolge aus zu entfernen .bash_profile. String wird hinzugefügt, wenn mein Shell-Skript ausgeführt wird:

Mein String bei bash_profile lautet wie folgt:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Ich möchte die Zeichenfolgen entfernen, .bash_profilewenn myapp über entfernt wird rpm.

Wie entferne ich eine Zeichenfolge aus einer Datei über ein Shell-Skript? (oder mögliche alternative Methode)

Gyhot
quelle

Antworten:

11

Sie können eine Zeichenfolge aus einer Textdatei entfernen sed (andere Tools sind vorhanden).

Zum Beispiel:

sed -i -e '/myapp/d' .bash_profile

wird aus .bash_profile jeder Zeile entfernt, die die Zeichenfolge enthält myapp.

lgeorget
quelle
10

Eine Datei wie befindet sich ~/.bash_profilein einem Home-Verzeichnis eines Benutzers. Eine solche Datei unterliegt vollständig der Kontrolle des Benutzers. Global wirkende Befehle wie rpmsollen solche Dateien nicht ändern.

  • Normalerweise haben Sie eine Basiskonfigurationsdatei, die vom RPM-Paket geliefert wird.

  • Sie haben dann eine globale Konfigurationsdatei, die von root verwendet werden kann, um einige für das jeweilige System spezifische Einstellungen zu überschreiben.

  • Dann haben Sie persönliche Konfigurationsdateien in Ihrem Home-Verzeichnis, mit denen Sie die globale Einstellung mit Ihren persönlichen Einstellungen überschreiben können.

Ein Befehl wie rpmsollte nur den ersten und niemals den letzteren ändern.

michas
quelle
Können Sie eine URL vorschlagen, die für dieses Thema geprüft werden soll?
Gyhot
1
@ Gyhot unix.stackexchange.com/questions/77518/… ist gut. Wenn Ihre Zielverteilung ein /etc/profile.dVerzeichnis hat, legen Sie dort eine Datei ab, die diese exportZeile enthält. Andernfalls können Sie Änderungen vornehmen /etc/profile, achten Sie jedoch darauf, dass die Anpassungen durch den Systemadministrator nicht beeinträchtigt werden.
Gilles 'SO - hör auf böse zu sein'
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Hauke ​​Laging
quelle
0

Probieren Sie es aus:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
Kenorb
quelle