Bölünmek istiyorum $ dosya ihtiva eden x satırları ikiye bölün ve kaç satır içerdiğini kontrol edin " ölü "bir günlükte. Aşağıdakilerle başladım:
half=`expr $(egrep -c . $file) / 2`
sed -n 1,${half}p $file |
xargs echo $file $half $(egrep -c dead $I) > log_1
sed -n ${half},${egrep -c . $file}p |
xargs echo $file $half $(egrep -c dead $I) > log_2
ilk çıktı sed
komut tamam, ancak kullanılırken egrep
aralığında sed
yanlış gider:
DeadOrAlive 5 2
-bash: ${half},${egrep -c . $file}p: bad substitution
Dosyayı bölmenin daha etkili bir yolu var mı? bash
?
egrep
boş olmayan satırları sayar. grep -c ^ file
boş satırlar dahil toplam satır sayısını üretecektir. (Dosyanız boş satır içermiyorsa, elbette her ikisi de eşdeğerdir.) wc -l <file
muhtemelen daha hızlıdır çünkü herhangi bir regex eşlemesi yapması gerekmez. Özellikle boş olmayan satırları saymak istiyorsanız, tabii ki eşleşmeleri kontrol etmeniz gerekir.
$I
içermek için?
sed "$half,\$"
satırları seçecek $half
Dosyanın sonuna kadar, kodunuz en üstteki dosyayı içerecek olsa da (satır numarası $half
) hem birinci hem de ikinci yarıda.
sed "1,${half}d" file
ilk silecek $half
çizgiler ve gerisini yazdırın. Bununla, dosyayı düzgün bir şekilde örtüşmeyen iki bölüme bölebilirsiniz.
$(...)
ve${...}
farklı yapılardır. Birincisi komut değiştirme, ikincisi parametre genişletmedir.