Saya telah mendapatkan file .csv, dengan beberapa angka, saya ingin mendapatkan file baru dengan jumlah baris dan satu kolom yang sama, dengan jumlah angka dari baris yang sesuai dalam file .csv yang asli.
Masukkan contoh (perhatikan spasi putih, saya harap ini tidak menjadi masalah)
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Output yang diharapkan
2
4
5
6
7
Kode saya (tidak menghasilkan output apa pun):
file_out="output.txt"
file_in="input.txt"
cmd3="sum_file=\$(awk -F, '
{
sum = 0;
for (i=1; i<=NF; i++) {
sum += \$i;
}
print sum;
}
' ${file_in})"
echo $cmd3
eval $cmd3
eval "echo ${sum_file} > ${file_out}"
Anda dapat mengusulkan juga alat yang berbeda dari awk, tapi saya akan senang mengetahui mengapa kode saya tidak berfungsi, mungkin karena spasi putih (saya tidak berpikir begitu).
Tunggu, output apa yang Anda harapkan? Ke layar? Anda mengarahkan ke file output. Apakah file itu kosong?
—
glenn jackman
@glennjackman, masalahnya ada di baris terakhir. Seharusnya saya gunakan
—
Nisba
\${sum_file}
. Saya menggunakan eval untuk keperluan debug, karena mudah untuk menggemakan baris. Tetapi dengan melakukan itu, saya memperkenalkan bug baru :( Setidaknya sekarang sudah dipecahkan
eval
memasukkannya? Tampaknya sangat berbelit-belit. Apakah ada persyaratan yang tidak Anda beritahukan kepada kami?