轉載於: http://11259394.blog.51cto.com/11249394/1748932 編程
wc: bash
wc [OPTION]... [FILE]...ide
-l : 行數spa
-w : 單詞數orm
-c :字節數blog
練習:查看passwd文件中有多少行排序
wc -l /etc/passwd
cut: get
cut OPTION... [FILE]...博客
-d : CHAR: 以指定的字符爲輸入分隔符;默認爲空白字符;it
-f : FILEDS:挑選出的字段;
-f# : 指定的單個字段
-f#,# : 離散的多個字段;例如1,3,7
#-# :連續的多個字段
--output-delimiter= : 輸出分隔符
練習:取出/etc/passwd下以冒號分隔的第三個和第五個字段
cut -d: -f 1,5 /etc/passwd
awk:
awk -F CHAR '{print $1,$2,...}' file...
awk -F : /PATTERN/'{print $1,$2}' /etc/passwd
-F:指定輸入分隔符
awk -F: /'^root\>/{print $3}' /etc/passwd
sort:
sort [OPTION]...[FILE]...
-r : 降序排序
-u : 相同的行只保留一次
-t : 指定分隔符
-k# : 用於作排序比較的字段
-n : 以數值大小進行排序
-f : 比較時忽略字符大小寫
uniq:
uniq [OPTION]...[INPUT[OUTPUT]]
-d,--repeated:僅顯示重複的行(連續的兩行重複纔算重複)
-u,--unique;僅顯示不重複的行
-c,--count;在每行行首顯示其出現的次數
diff:
diff [OPTION]...FILES
-u:顯示上下文默認三行
注: oldfile是原文件 newfile是修改後的文件 PATCH_FILE是生成的補丁文件
diff /path/to/oldfile /path/to/newfile > /PATH/TO/PATCH_FILE
patch命令:
patch [-d dir] [-i pathfile] [-p num] [file]
-i /PATH/FROM/PATCH_FILE :指明補丁文件路徑 把舊的變成新的
-R or --reverse :還原 把新的變成舊的
注:給原文件打補丁,成爲修改以後的新文件
patch -i /PATH/TO/PATCH_FILE /path/to/oldfile
注:給新文件打補丁,還原成老文件
patch -R /path/to/newfile < /PATH/FROM/PATCH_FILE
bash腳本編程之算數運算:
+,—
*,/
%:取餘
**:次方
算數運算格式:
let VAR=算數表達式
VAR=$[算數表達式]
VAR=$((算數表達式))
VAR=$(expr $ARG1 $OP $ARG2)
注:OP含義爲運算符;第四種方式空格必須不能省;乘法符號在第四種裏面須要轉義
練習1:
求/etc/passwd文件中的root、daemon和shutdown三個用戶的id之和;
#!/bin/bash # second=`grep -E "^(root|daemon|shutdown)" /etc/passwd | cut -d: -f 3 | head -n 2 | tail -1` first=`grep -E "^(root|daemon|shutdown)" /etc/passwd | cut -d: -f 3 | head -n 1` third=`grep -E "^(root|daemon|shutdown)" /etc/passwd | cut -d: -f 3 | tail -1` let var=$second+$first+$third echo $var
練習2:
(1) 求/etc/fstab、/etc/grub2.cfg和/etc/issue文件的行數之和;
(2) 求上述三個文件中的總空白行數;
#!/bin/bash # a=`wc -l /etc/fstab | cut -d" " -f 1` b=`wc -l /etc/grub2.cfg | cut -d" " -f 1` c=`wc -l /etc/issue | cut -d" " -f 1` let d=$a+$b+$c echo $d
grep "[[:space:]]*\>" /etc/fstab | wc -c 得出總共有多少個空格
本文出自 「11249394」 博客,請務必保留此出處http://11259394.blog.51cto.com/11249394/1748932