Saya menggunakan perintah wc -c untuk menghitung jumlah karakter tetapi itu memberi saya angka yang salah, jumlah karakter ditambah satu sebagai contoh:
echo "k" | wc -c
itu memberi saya 2 karakter
jadi mengapa tidak 1?
Saya menggunakan perintah wc -c untuk menghitung jumlah karakter tetapi itu memberi saya angka yang salah, jumlah karakter ditambah satu sebagai contoh:
echo "k" | wc -c
itu memberi saya 2 karakter
jadi mengapa tidak 1?
Jawaban:
Lihatlah pesan bantuan untuk wc. The -cpilihan mencetak jumlah karakter. The echoperintah termasuk karakter baris baru secara default. Saat wcmelihat baris baru, ia menghitungnya sebagai karakter lain dan karenanya menambah jumlah hasil Anda. Anda dapat menyiasatinya dengan menggunakan salah satu alternatif yang ditunjukkan di bawah ini; -wmenghitung jumlah kata dan -lmenghitung jumlah baris.
echo "k" | wc -w
echo "k" | wc -l
Anda dapat menyalurkan output wcke awkuntuk mendapatkan jumlah karakter kecuali karakter baris baru:
wc <filename> | awk '{print $3-$1}'
Output default wctanpa opsi mencetak jumlah karakter baris baru ($ 1 hingga awk), jumlah kata dan jumlah karakter ($ 3 hingga awk) dalam urutan ini.
echo -n "k" | wc -c. Itu masuk akal
printfsering lebih disukai sebelumnya echoketika konsistensi penting. Itu tidak mencetak baris baru kecuali diminta secara khusus, jadi printf "k" | wc -mberikan 1, yaitu jumlah karakter yang dicetak. Untuk menghitung karakter di baris pertama file, seseorang dapat melakukan mis $(($(head -1 file | wc -m)-1))(membungkusnya $(())untuk melakukan shell aritmatika untuk menghapus jumlah baris baru) atau bahkan lebih baik: gunakan awk dan lakukan awk 'NR==1{print length}' file.
ketika Anda echo "k", echoperintah menambahkan karakter baris baru untuk apa pun yang Anda minta untuk dicetak ("k"). Anda dapat menggunakan -nopsi untuk menonaktifkan ini:
echo -n k | wc -c
1
Untuk melihat karakter yang tidak terlihat itu , Anda dapat membuang aliran dengan odatau hd:
echo k | od -t c
0000000 k \n
echo k | hd
00000000 6b 0a |k.|
echo k | od -t a -A n
k nl
-cpilihan adalah jumlah byte, bukan jumlah karakter