bash常見用法
阿新 • • 發佈:2021-01-07
寫一個 bash指令碼以輸出一個文字檔案 nowcoder.txt中的行數 wc -l
經常檢視日誌的時候,會從檔案的末尾往前檢視,於是請你寫一個 bash指令碼以輸出一個文字檔案 nowcoder.txt中的最後5行 tail -5 nowcoder.txt
寫一個 bash指令碼以輸出數字 0 到 500 中 7 的倍數(0 7 14 21...)的命令 for i in {0..500..7} do echo $i done
寫一個 bash指令碼以輸出一個文字檔案 nowcoder.txt 中第5行的內容。 awk '{if (NR == 5) print $0}' nowcoder.txt
寫一個 bash指令碼以輸出一個文字檔案 nowcoder.txt中空行的行號,可能連續,從1開始 awk '{if ($0 == null) print NR}' nowcoder.txt awk '/^$/ {print NR}' nowcoder.txt
寫一個 bash指令碼以去掉一個文字檔案 nowcoder.txt中的空行 awk '{if ($1.length >= 1) print $1}' nowcoder.txt sed '/^$/d' nowcoder.txt
寫一個 bash指令碼以統計一個文字檔案 nowcoder.txt中字母數小於8的單詞。awk '{for(i=1;i<=NF;i++) if (length($i) <8) print $i}' nowcoder.txt 其中NF表示的欄位數
假設 nowcoder.txt 內容如下: root 2 0.0 0.0 0 0 ? S 9月25 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? I< 9月25 0:00 [kworker/0:0H] web 1638 1.8 1.8 6311352 612400 ? Sl 10月16 21:52 test web 1639 2.0 1.8 6311352 612401 ? Sl 10月16 21:52 test tangmiao-pc 5336 0.0 1.4 9100240 238544 ?? S 3:09下午 0:31.70 /Applications 以上內容是通過ps aux | grep -v 'RSS TTY' 命令輸出到nowcoder.txt檔案下面的 請你寫一個指令碼計算一下所有程序佔用記憶體大小的和: awk 'BEGIN{sum=0} {sum=sum+$6} END{print sum}' nowcoder.txt 其中$0 指的是一行資料,$1指的是一行資料中的第一個,依次往後, 其實該提計算的是虛擬記憶體所佔的頁的數量之和,並不是虛擬虛擬記憶體的大小; 第一列是程序名,2是pid, 3是cpu百分比,4是記憶體的百分比,5是虛擬記憶體,6是頁數量
寫一個 bash指令碼以統計一個文字檔案 nowcoder.txt 中每個單詞出現的個數。 為了簡單起見,你可以假設: nowcoder.txt只包括小寫字母和空格。 每個單詞只由小寫字母組成。 單詞間由一個或多個空格字元分隔。 示例: 假設 nowcoder.txt 內容如下: welcome nowcoder welcome to nowcoder nowcoder 你的指令碼應當輸出(以詞頻升序排列): to 1 welcome 2 nowcoder 3 cat nowcoder.txt| tr -s ' ' '\n' | sort | uniq -c | sort| awk '{print $2,$1}'
給定一個 nowcoder.txt檔案,其中有3列資訊,如下例項,編寫一個sheel指令碼來檢查檔案第二列是否有重複,且有幾個重複,並提取出重複的行的第二列資訊: 例項: 20201001 python 99 20201002 go 80 20201002 c++ 88 20201003 php 77 20201001 go 88 20201005 shell 89 20201006 java 70 20201008 c 100 20201007 java 88 20201006 go 97 結果: 2 java 3 go awk '{print $2}' | sort | uniq -c | sort | grep -v '1'
寫一個 bash指令碼來轉置文字檔案nowcoder.txt中的檔案內容。 為了簡單起見,你可以假設: 你可以假設每行列數相同,並且每個欄位由空格分隔 示例: 假設 nowcoder.txt 內容如下: job salary c++ 13 java 14 php 12 你的指令碼應當輸出(以詞頻升序排列): job c++ java php salary 13 14 12 awk '{ for (i=1;i<=NF;i++){ if (NR==1){ res[i]=$i } else{ res[i]=res[i]" "$i // 做追加處理 } } }END{ for(j=1;j<=NF;j++){ print res[j] // 每個欄位是原始資料的一列 } }' nowcoder.txt awk是對每一行資料做處理, END是結束上次for迴圈的每一行資料的處理;然後將處理的資料再輸出;
寫一個 bash指令碼以統計一個文字檔案 nowcoder.txt中每一行出現的1,2,3,4,5數字個數並且要計算一下整個文件中一共出現了幾個1,2,3,4,5數字數字總數。 示例: 假設 nowcoder.txt 內容如下: a12b8 10ccc 2521abc 9asf 你的指令碼應當輸出: line1 number: 2 line2 number: 1 line3 number: 4 line4 number: 0 sum is 7 awk ' { count=0 len=length($0) for(i=1;i<=len;i++){ s = substr($0,i,1) if(0<s && s<6){ count++ total++ } } print "line"NR "number:"count }END { print "sum is"total }' nowcoder.txt substr(a,b,c) a是字串, b是開始位置,c是多少個字元