Saya mencoba mengubah satu kata pada baris tertentu dalam sebuah file, tetapi saya mengalami masalah saat menghubungkan semuanya.
Pada dasarnya, pada satu baris di file saya ada kata kunci 'firmware_revision', dan pada baris ini (dan hanya baris ini) saya ingin mengganti kata 'test' dengan kata 'production'.
Jadi saya bisa melakukan ini:
grep 'firmware_revision' myfile.py | sed 's/test/production'
Ini akan memilih baris yang saya inginkan dan melakukan substitusi, tetapi saya tidak tahu cara memasukkan baris baru ini ke file asli untuk mengganti baris yang lama. Saya jelas tidak bisa hanya mengarahkannya kembali ke file, jadi apa yang harus saya lakukan?
Bahkan jika saya menggunakan temporaries, dengan menggunakan grep
hanya untuk mendapatkan baris saya perlu saya kehilangan semua data lain dalam file, jadi saya tidak bisa lagi mengarahkan semua itu ke file temp kemudian ganti yang asli dengan temp.
Sunting - Seseorang meminta informasi lebih lanjut
Katakanlah saya punya file yang penuh dengan baris seperti ini
[
('key_name1', str, 'value1', 'Description'),
('key_name2', str, 'value2', 'Description'),
('key_name3', str, 'value3', 'Description'),
('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name')
]
sekarang saya ingin menulis skrip (idealnya satu baris) yang akan menemukan baris yang berisi 'firmware_revision', dan mengubah semua contoh kata 'tes' pada baris itu menjadi 'produksi'. Kata 'test' mungkin ada di tempat lain di file itu dan saya tidak ingin itu diubah. Jadi untuk menjadi jelas, saya ingin mengubah baris di atas menjadi
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
Bagaimana saya melakukan ini?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
sangat kuat, ia dapat melakukan kedua fungsi (grep
dan substitusi) tetapi kami akan memerlukan lebih banyak info tentang bagaimana garis terlihat untuk membantu Anda.