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

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009