cattidak dapat menampilkan data yang tidak ada dalam file. Jika file kosong, itu bahkan tidak memiliki karakter baris baru untuk memberikan baris kosong sebagai output.
Anda dapat memastikan bahwa file berisi setidaknya satu karakter baris baru.
Ini adalah bagaimana Anda menggunakan GNU awkuntuk memastikan bahwa (ini memodifikasi file kosong):
awk 'ENDFILE { if (FNR == 0) printf("\n") >>FILENAME }' 2[0-8]_SumActive.txt
The ENDFILEblok akan dieksekusi setelah menyelesaikan membaca salah satu file. Jika FNRnol, kami tidak pernah melihat baris apa pun di file, jadi kami memasukkan satu baris baru ke dalamnya. Script kemudian dilanjutkan dengan file selanjutnya.
Anda kemudian dapat menggunakan catseperti yang Anda lakukan dalam pertanyaan.
Atau, tanpa mengubah file, gunakan GNU awk alih-alih cat :
awk 'ENDFILE { if (FNR == 0) printf("\n") } 1' 2[0-8]_SumActive.txt
Ini melakukan pendeteksian file kosong yang sama seperti di atas, tetapi mencetak baris baru ke output standar daripada ke file. Pada 1akhirnya dapat diganti oleh { print }dan akan menyebabkan semua data dalam file yang tidak kosong akan dihasilkan.
Sebagai alternatif, sebuah loop shell (harus bekerja di shell POSIX):
for name in ./2[0-8]_SumActive.txt; do
if [ -s "$name" ]; then
cat "$name"
else
printf '\n'
fi
done
The -stes akan benar jika file ada dan memiliki lebih besar ukuran dari nol.
Jika Anda ingin string literal [Blank]dihasilkan untuk file kosong, cukup masukkan string itu di depan \ndalam panggilan ke printfatas (ini juga akan berfungsi dalam awkkode).