Bagaimana cara menghapus string apa pun dari file melalui skrip shell?

9

Saya mencoba untuk menghapus string dari .bash_profile. String ditambahkan ketika skrip shell saya dijalankan:

String saya di bash_profile sebagai berikut:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Saya ingin menghapus string dari .bash_profilesaat myapp dihapus melalui rpm.

Bagaimana cara menghapus string apa pun dari file melalui skrip shell? (atau kemungkinan metode alternatif)

Gyhot
sumber

Jawaban:

11

Anda dapat menghapus string dari file teks dengan sed (alat lain ada).

Sebagai contoh:

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

menghapus dari .bash_profile setiap baris yang berisi string myapp.

lororget
sumber
10

File seperti ~/.bash_profiletinggal di direktori home pengguna. File seperti itu sepenuhnya di bawah kendali pengguna. Perintah bertindak global seperti rpmtidak seharusnya mengubah file seperti itu.

  • Anda biasanya memiliki file konfigurasi dasar, yang dikirim oleh paket rpm.

  • Anda kemudian memiliki file konfigurasi global yang dapat digunakan oleh root untuk menimpa beberapa preferensi khusus untuk sistem yang diberikan.

  • Kemudian Anda memiliki file konfigurasi pribadi di direktori home Anda yang dapat Anda gunakan untuk mengganti pengaturan global dengan preferensi pribadi Anda.

Perintah seperti rpmseharusnya hanya mengubah yang pertama dan tidak pernah mengubah yang terakhir.

michas
sumber
Bisakah Anda menyarankan URL untuk memeriksa topik ini?
Gyhot
1
@Gyhot unix.stackexchange.com/questions/77518/… bagus. Jika target distribusi Anda memiliki /etc/profile.ddirektori, letakkan file yang berisi exportbaris itu di sana. Jika tidak, Anda dapat mengedit /etc/profile, tetapi sangat berhati-hati untuk tidak merusak penyesuaian oleh administrator sistem.
Gilles 'SANGAT berhenti menjadi jahat'
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Hauke ​​Laging
sumber
0

Coba dengan vim-way:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
kenorb
sumber