每日一題--3-求一個文件裏面指定字符出現的次數
阿新 • • 發佈:2018-10-09
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-求一個文件裏面指定字符出現的次數