Я використовував команду wc -c для підрахунку кількості символів, але вона дає мені неправильне число, кількість символів плюс один в якості прикладу:
echo "k" | wc -c
це дає мені 2 символи
так чому б не 1?
Я використовував команду wc -c для підрахунку кількості символів, але вона дає мені неправильне число, кількість символів плюс один в якості прикладу:
echo "k" | wc -c
це дає мені 2 символи
так чому б не 1?
Відповіді:
Ознайомтеся з повідомленням довідки для wc. -cОпція виводить кількість символів. echoКоманда включає в себе символ нового рядка за замовчуванням. Коли wcбачить новий рядок, він зараховує його як інший символ і, отже, додатковий підрахунок у вашому результаті. Ви можете обійти це, скориставшись однією з альтернатив, показаних нижче; -wпідраховує кількість слів і -lпідраховує кількість рядків.
echo "k" | wc -w
echo "k" | wc -l
Ви можете передавати висновок wcдля, awkщоб отримати кількість символів, виключаючи символи нового рядка:
wc <filename> | awk '{print $3-$1}'
Вихід за замовчуванням wcбез параметрів виводить у цьому порядку кількість символів нового рядка ($ 1 до awk), кількість слів та кількість символів ($ 3 to awk).
echo -n "k" | wc -c. Це має сенс
printfчасто надається перевагу раніше, echoколи важлива послідовність. Він не друкує новий рядок, якщо спеціально не запитується, так не printf "k" | wc -mдає 1, тобто кількість друкованих символів. Для підрахунку символів у першому рядку файлу можна зробити, наприклад, $(($(head -1 file | wc -m)-1))(обернути його, $(())щоб зробити арифметику оболонки, щоб видалити кількість нових рядків) або ще краще: використовувати awk та do awk 'NR==1{print length}' file.
коли ви echo "k", echoкоманда додає символ нового рядка до того, що ви попросили його роздрукувати ("k"). Ви можете скористатися -nопцією, щоб відключити це:
echo -n k | wc -c
1
Для перегляду цього невидимого символу, ви можете скинути потік до цього odчи 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
-cваріантом є кількість байт, а не кількість символів