Öyle bir seyir defteri…

Bir dosyanın ilk n satırını silmek

16 Kasım 2011 Çarşamba, 01:10 | Gezegen

Eldeki çok sayıda dosyanın, ilk 6 satırındaki ifadeleri silmem gerekti. Bunu elle yapmak, dosya sayısı çok olunca pek mümkün değil tabii.

Tek bir dosya için şöyle bir basit betik işimi gördü:


count=`wc -l $1|cut -f1 -d" "`
more +7 $1 | head -$(( count )) > $1.kesik
mv -f $1.kesik $1

Daha sonra bunu aradan seçtiğim dosyalara uygulamak için de find kullandım:


find . -name '*.txt' -exec /root/betik.sh {} \;

Tertemiz oldu, bal dök… :)

  1. “Bir dosyanın ilk n satırını silmek” İçin Yapılan 2 Yorum

  2. Türker Sezer 16 Kasım 2011 Çarşamba günü dedi ki :

    Kabuk komutlarını görüp korkanlar, bu işleri başka türlü yapmak için hayatlarından ne kadar büyük fedakarlık ediyorlar.

    Bu yazıyı okur okumaz, benzer komutları sıkça kullandığımdan, daha kısası olabilir mi gibisinden bir deneme yaptım. `tail` komutunun man sayfasında +n parametresi ile n’inci satırdan sonrasını oku gibi bir özelliği olduğunu gördüm. Bu sayede 6. satır ve sonrası işini:

    tail +6

    şeklinde halletmiş oldum.

    Çıktıyı dosyaya aktarma ve dosya adı değiştirme kısmını kısaltmak için de zamanında sudo ile çıktı aktarımı yapmaya çalışırken tanıştığım `tee` aklıma geldi. O kısmı da tee kullanarak:

    tail +6 | tee

    şeklinde kısalttım.

    Bu ikisini find ile birleştirince aşağıdaki komut çıktı:

    find -name “*.txt” -exec sh -c “tail +6 {} | tee {} > /dev/null” \;

    Bu yorum, bu karışık satırları nasıl ezberliyorsunuz sorusuna bir yanıt olarak, komutların nasıl oluştuğunu göstermek açısından da iyi olur diye düşünüyorum.

  3. Ahmet Kuruköse 16 Kasım 2011 Çarşamba günü dedi ki :

    sed ile dosyanın ilk 6 satırı şöyle silinebilir.

    sed -i ‘1,6d’

Bir Yorum Yazın