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.