1. 程式人生 > >每日一題--3-求一個文件裏面指定字符出現的次數

每日一題--3-求一個文件裏面指定字符出現的次數

sed block 返回 code lan 替換 sum str 格式

求一個文件裏面指定字符出現的次數:

我們使用/ect/passwd文件來模擬,我們取出文件中:出現的次數

[root@web01-7 /]# cp /etc/passwd /tmp/
[root@web01-7 /]# awk ‘{Num=gsub(/:/,":",$0);sum = sum + Num}END{print sum}‘ /tmp/passwd 
156

1,第一個裏程碑

awk中有個替換函數gsub這個函數可以替換指定字符串,並返回替換操作的次數,我們可以使用這個來來文件中的":"替換成":"然後讓他返回替換了多少次,我們就能統計出來出現了多少次

2,第二個裏程碑

了解gsub的語法格式:
替換:gsub(/要替換的字符串/,"替換成的字符串",在哪個地方替換)


替換的次數:Num = gsub(/要替換的字符串/,"替換成的字符串",在哪個地方替換)

3,第三個裏程碑

了解了上面兩個我們就能完整上述的那個表達式了,為什麽要在最後面輸出END呢?因為我們對sum進行了累加,再有在末行模式才能統計出來出現的所有次數

4,優化上述表達式

[root@web01-7 /]# awk ‘{sum = sum + gsub(/:/,"",$0)}END{print sum}‘ /tmp/passwd  
156

總結

1,awk中的gsub替換所有的符合的字符串,相當於sed的“s###g”
2,awk中的sub只替換第一次匹配的字符串,相當於sed的“s###”

如果各位大佬有更好的辦法請指點

每日一題--3-求一個文件裏面指定字符出現的次數