Bir dosyadaki belirli bir satırda tek bir kelimeyi değiştirmeye çalışıyorum, ancak hep birlikte bağlanmakta sorun yaşıyorum.
Temel olarak, dosyamdaki bir satırda 'firmware_revision' anahtar kelimesi var ve bu satırda (ve sadece bu satırda) 'test' kelimesini 'üretim' kelimesiyle değiştirmek istiyorum.
Bunu yapabilirim:
grep 'firmware_revision' myfile.py | sed 's/test/production'
Bu, istediğim satırı seçecek ve yerine koymayı gerçekleştirecek, ancak eski satırı değiştirmek için bu yeni satırı orijinal dosyaya nasıl alacağımı anlayamıyorum. Açıkçası sadece dosyaya yönlendiremiyorum, ne yapmalıyım?
Tempoları kullansam bile, grep
sadece ihtiyacım olan hattı almak için kullanarak dosyadaki diğer tüm verileri kaybettim, böylece artık sadece bir geçici dosyaya yönlendiremiyorum, sonra orijinali temp ile değiştiremiyorum.
Düzenle - Birisi daha fazla bilgi istedi
Diyelim ki böyle satırlarla dolu bir dosyam var
[
('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')
]
şimdi 'firmware_revision' içeren satırı bulan ve 'line' kelimesinin tüm örneklerini 'üretim' olarak değiştiren bir komut dosyası (ideal olarak bir satır) yazmak istiyorum. 'Test' kelimesi o dosyanın başka yerlerinde olabilir ve bunların değiştirilmesini istemiyorum. Açık olmak gerekirse, yukarıdaki satırı şu şekilde değiştirmek istiyorum:
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
Bunu nasıl yaparım?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
çok güçlüdür, her iki işlevi de (grep
ve yerine koymayı) gerçekleştirebilir, ancak hattın size nasıl yardımcı olduğu hakkında daha fazla bilgiye ihtiyacımız olacak.