[英]Counting number of characters in a file through shell script
我想檢查文件中的字符數從開始到EOF字符。 任何人都可以通過shell腳本告訴我如何做到這一點
這樣做:
wc -c filename
如果只想在輸出中重復沒有文件名的計數:
wc -c < filename
編輯:
使用-m
來計算字符而不是字節(如Sébastien的答案所示)。
#!/bin/sh
wc -m $1 | awk '{print $1}'
wc -m
計算字符數; awk
命令只打印字符數,省略文件名。
wc -c
會給你字節數(可以與字符數不同,因為根據編碼你可能有幾個字節編碼的字符)。
awk '{t+=length($0)}END{print t}' file3
要獲得字符串的確切字符數,請使用printf,而不是echo,cat或直接在文件上運行wc -c,因為使用echo,cat等將計算換行符,這將為您提供包括換行符。 因此,如果使用echo等,帶有文本'hello'的文件將打印6,但如果使用printf,它將返回精確的5,因為沒有要計算的換行元素。
如何使用printf計算字符串中的字符:
$printf '6chars' | wc -m
6
要將其轉換為腳本,您可以在文本文件上運行以計算字符數,將以下內容保存在名為print-character-amount.sh的文件中:
#!/bin/bash
characters=$(cat "$1")
printf "$characters" | wc -m
包含上述文本的文件print-character-amount.sh上的chmod + x,將文件放在PATH中(即/ usr / bin /或在.bashrc文件中作為PATH導出的任何目錄)然后在文本文件類型上運行腳本:
print-character-amount.sh file-to-count-characters-of.txt
只是awk
awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)c++}END{print "total chars:"c}' file
只有殼
var=$(<file)
echo ${#var}
紅寶石(1.9+)
ruby -0777 -ne 'print $_.size' file
測試以下腳本並准確給出預期的結果
\#!/bin/bash
echo "Enter the file name"
read file
echo "enter the word to be found"
read word
count=0
for i in \`cat $file`
do
if [ $i == $word ]
then
count=\`expr $count + 1`
fi
done
echo "The number of words are $count"
我原本以為使用stat
來查找文件的大小會更好,因為文件系統已經知道它,而不是導致整個文件必須用awk
或wc
讀取 - 特別是如果它是多個GB文件或可能不駐留在HSM上的文件系統中的文件。
stat -c%s file
是的,我承認它不考慮多字節字符,但會補充說OP從未澄清這是否是一個問題。
對user.py等人的信用。
echo "ää" > /tmp/your_file.txt
cat /tmp/your_file.txt | wc -m
結果3
。
在我的例子中,結果預計為2
(字母ä
兩倍)。 但是,echo(或vi)會在輸出(或文件)的末尾添加換行符\\n
。 於是兩個ä
和一個Linux的換行符\\n
進行計數。 這三個在一起。
使用管道|
不是最短的變體,但所以我必須知道更少的wc
參數。 另外,根據我的經驗, cat
是防彈的。
在Ubuntu 18.04.1 LTS(Bionic Beaver)上測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.