SORU
8 ŞUBAT 2009, Pazar


Bir Metin İçinde Bul ve Değiştir bir Bash Komut Dosyası

Belirli bir giriş için Bul ve değiştir bir dize, söyle ** 0, /tmp/file.txt dosya başka bir dize ile, say XYZ değiştirmek için en kolay yolu nedir?

Bir uygulama yazma ve IronPython SSH-ile komutları çalıştırmak için kullanıyorum; ama Unix o kadar iyi tanımıyorum ve Ne aramak için bilmiyorum.

Bash, komut satırında olmasının dışında, çok güçlü bir betik dili olabileceğini duydum. Eğer bu doğruysa, bu gibi eylemleri gerçekleştirebilirsiniz sanırım.

Bash ile bunu yapabilir miyim, ve benim hedefe ulaşmak için (bir satır) en basit komut nedir?

CEVAP
8 ŞUBAT 2009, Pazar


En kolay yolu sed (veya perl) kullanmak için:

sed -i -e 's/abc/XYZ/g' /tmp/file.txt

Sed yerinde bir düzenleme -i seçeneği nedeniyle bunu çağırmak olacak. Bu bash çağrılabilir.

Eğer gerçekten sadece bash kullanmak istiyorsanız, o zaman aşağıdaki geçici:

while read a ; do echo ${a//abc/XYZ} ; done < /tmp/file.txt > /tmp/file.txt.t ; mv /tmp/file.txt{.t,}

Bu, her satır üzerinde bir değişiklik yapmadan, geçici bir dosya için (giriş hırpalamak istemiyorum) yazma döngüsü. Sonunda taşınmak özgün adı geçici taşır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • Mary Jane Tauyan

    Mary Jane Ta

    20 AĞUSTOS 2009
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010