我嘗試計算Bash中我的文件中的數字和字母的數量。 我知道我可以使用wc -c file
來計算字符的數量,但是如何將它修復爲僅字母和其次數字?如何計算文件中的數字/字母數量?
2
A
回答
0
通過組合-c
(補充)和-d
(刪除)標誌,可以使用tr
僅保留字母數字字符。從那裏,它只是一個部分管道的問題:
$ cat myfile.txr | tr -cd [:alnum:] | wc -c
0
要算你可以wc
結合grep
的字母和數字編號:
grep -o [a-z] myfile | wc -c
grep -o [0-9] myfile | wc -c
有了調整,你可以修改它的點點數數字或字母字或字母詞是這樣,
grep -o [a-z]+ myfile | wc -c
grep -o [0-9]+ myfile | wc -c
grep -o [[:alnum:]]+ myfile | wc -c
0
您可以使用SED來替換是那種不是所有字符你正在尋找,然後字數結果的字符。
# 1h;1!H will place all lines into the buffer that way you can replace
# newline characters
sed -n '1h;1!H;${;g;s/[^a-zA-Z]//g;p;}' myfile | wc -c
It's easy enough to just do numbers as well.
sed -n '1h;1!H;${;g;s/[^0-9]//g;p;}' myfile | wc -c
Or why not both.
sed -n '1h;1!H;${;g;s/[^0-9a-zA-Z]//g;p;}' myfile | wc -c
0
有許多的方式來處理分析線,字,並在bash的文本文件的性格頻率。利用bash內建字符大小寫篩選器(例如[:upper:]
等),您可以深入查看文本文件中每種字符類型出現的頻率。下面是一個簡單的腳本,它從stdin
中讀取並提供正常的wc
輸出作爲其第一行輸出,然後輸出upper
,lower
,digits
,punct
和whitespace
的編號。
#!/bin/bash
declare -i lines=0
declare -i words=0
declare -i chars=0
declare -i upper=0
declare -i lower=0
declare -i digit=0
declare -i punct=0
oifs="$IFS"
# Read line with new IFS, preserve whitespace
while IFS=$'\n' read -r line; do
# parse line into words with original IFS
IFS=$oifs
set -- $line
IFS=$'\n'
# Add up lines, words, chars, upper, lower, digit
lines=$((lines + 1))
words=$((words + $#))
chars=$((chars + ${#line} + 1))
for ((i = 0; i < ${#line}; i++)); do
[[ ${line:$((i)):1} =~ [[:upper:]] ]] && ((upper++))
[[ ${line:$((i)):1} =~ [[:lower:]] ]] && ((lower++))
[[ ${line:$((i)):1} =~ [[:digit:]] ]] && ((digit++))
[[ ${line:$((i)):1} =~ [[:punct:]] ]] && ((punct++))
done
done
echo " $lines $words $chars $file"
echo " upper: $upper, lower: $lower, digit: $digit, punct: $punct, \
whitespace: $((chars-upper-lower-digit-punct))"
測試輸入
$ cat dat/captnjackn.txt
This is a tale
Of Captain Jack Sparrow
A Pirate So Brave
On the Seven Seas.
(along with 2357 other pirates)
示例使用/輸出
$ bash wcount3.sh <dat/captnjackn.txt
5 21 108
upper: 12, lower: 68, digit: 4, punct: 3, whitespace: 21
您可以自定義腳本,只要你喜歡,給你很少或儘可能多的細節。如果您有任何問題,請告訴我。
1
這裏是完全避免了管道,只是用tr
和外殼的方式給一個變量與${#variable}
長度的方式:
$ cat file
123 sdf
231 (3)
huh? 564
242 wr =!
$ NUMBERS=$(tr -dc '[:digit:]' < file)
$ LETTERS=$(tr -dc '[:alpha:]' < file)
$ ALNUM=$(tr -dc '[:alnum:]' < file)
$ echo ${#NUMBERS} ${#LETTERS} ${#ALNUM}
13 8 21
相關問題
- 1. 計算文件中字的數量
- 2. 如何計算NSString對象中非字母數字字符的數量?
- 3. 計算數據中字母字符的數量
- 4. Java計算字母數
- 5. 字母計數算法
- 6. Java:計算文本文件中的字母數
- 7. 如何計算文件中唯一字符的數量?
- 8. 如何計算字母出現在字符串中的次數?
- 9. 如何計算隨機字符串中的字母數?
- 10. 如何計算字符串中的字母數?
- 11. 計數字母文字
- 12. 只計算數字和字母列表中的數字
- 13. 如何計算Ruby中字符串之間不同字母的數量?
- 14. 計算文本文件中的行數,字數和字符數
- 15. 計算文件中字母的出現次數
- 16. 豬腳本來計算文件中的字母數
- 17. 如何計算JavaScript中的字母?
- 18. 字母和數字在計算機中的位數
- 19. raw_input中的字母和數字計數
- 20. 計算文件中的字符數C#
- 21. Python - 計算文件中的字符數
- 22. C# - 如何計算.RTF/.TXT文件中的單詞和字母?
- 23. 字母數字計數器
- 24. 計數字母
- 25. 從文本文件中計算唯一字的數量
- 26. 如何計算Python字符串中每個字符的數量?
- 27. 如何計算Lua中文本文件的字數
- 28. 計算文件中字數,行數,字符數
- 29. 如何計算字符串中的字母字符?
- 30. 你將如何去掃描java中的文件並計算該文件的字母數字字符和元音的數量?
'貓myfile.txr | tr -cd [123456789] | wc -c'那個例子是正確的? –
貓的無用用途。如果有一個名爲'm'的文件則失敗。 – Jens
@ K.Dote 0-9不是1-9 –