Karakter sayısını saymak için wc -c komutunu kullandım, ancak bana yanlış bir sayı, karakter sayısı artı bir örnek veriyor:
echo "k" | wc -c
bana 2 karakter veriyor
neden 1 değil?
Karakter sayısını saymak için wc -c komutunu kullandım, ancak bana yanlış bir sayı, karakter sayısı artı bir örnek veriyor:
echo "k" | wc -c
bana 2 karakter veriyor
neden 1 değil?
Yanıtlar:
İçin yardım mesajına bir göz atın wc. -cOpsiyon karakter sayısını yazdırır. echoKomut varsayılan olarak satır karakteri içerir. Yeni wcsatırı gördüğünde, karakteri başka bir karakter olarak sayar ve dolayısıyla sonucunuzdaki ek sayıdır. Aşağıda gösterilen alternatiflerden birini kullanarak bunun üstesinden gelebilirsiniz; -wkelime -lsayısını ve satır sayısını sayar.
echo "k" | wc -w
echo "k" | wc -l
Yeni satır karakterleri hariç olmak üzere, karakter sayısını elde wcetmek awkiçin ile çıkışını birbirine bağlayabilirsiniz:
wc <filename> | awk '{print $3-$1}'
wcSeçenek içermeyen varsayılan çıktı, yeni satır karakterlerinin sayısını (awk için 1 $), sözcük sayısını ve karakter sayısını (awk için $ 3) yazdırır.
echo -n "k" | wc -c. Bu mantıklı
printfönce tercih edilir echo. Özel olarak sorulmadıkça yeni satır yazdırmaz , yani yazdırılan karakter sayısını printf "k" | wc -mverir 1. Bir dosyanın ilk satırındaki karakterleri saymak için, örneğin $(($(head -1 file | wc -m)-1))( $(())yeni satır sayısını kaldırmak için kabuk aritmetiği yapmak için sarın ) veya daha iyisi: awk ve do komutlarını kullanın awk 'NR==1{print length}' file.
siz echo "k", echokomut, yazdırmasını istediğiniz her şeye yeni satır karakteri ekler ("k"). Bunu -ndevre dışı bırakmak için seçeneği kullanabilirsiniz :
echo -n k | wc -c
1
Bu görünmez karakteri görüntülemek için odveya ile akışı dökebilirsiniz 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
-cseçenek bir bayt sayısı değil, bir karakter sayısıdır