正則表達式與通配符
- 正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配。grep、awk、sed等命令可以支持正則表達式
- 通配符用來匹配符合條件的文件名,通配符是完全匹配。ls、find、cp這些命令不支持政策表達式,所以只能使用shell自己的通配符來進行匹配了
通配符
- 匹配任意內容
? 匹配任意一個內容
[] 匹配中扣號中的一個字符
正則表達式
略
字符截取命令
1 cut字段提取命令
cut [選項]文件名
選項:
-f 列號: 提取第幾列
-d 分隔符: 按照指定分隔符分割列
cut -f 2 student.txt
cut -f 2,4 student.txt
cut -d ":" -f 1,3 /etc/passwd
2 printf命令
printf '輸出類型輸出格式' 輸出內容
輸出類型:
%ns : 輸出字符串。n是數字只帶輸出幾個字符
%ni : 輸出整數。n是數字指代輸出幾個數字
%m.nf: 輸出浮點數。m和n是數字,指代輸出的整數位和小數位 如 %8.2f代表共輸出8位數,其中2位是小數,6位是整數
3 awk命令
awk `條件1{動作1} 條件2{動作2}...` 文件名
條件 (pattern):
一般使用關系表達式作為條件
x>10判斷變量 x是否大於10
x>=10大於等於
x<=10小於等於
動作(action)
格式化輸出
流程控制語句
awk `{print $2 "\t" $4 "\n"}` student.txt
df -h | awk `{print $1 "\t" $3}`
4 sed命令
sed的是流編程器的縮寫。它是文本處理中不可獲取的工具。ser主要是用來將數據進行選取、替換、刪除、新增的命令。
sed [選項]`[動作]` 文件名
選項:
-n 一般sed命令會把所有數據都輸出到屏幕,如果加入此選擇則只會把經過sed命令處理的行輸出到屏幕
-e 允許對輸入數據應用多條sed命令編輯
-i 用sed的修改結果直接修改讀取數據的文件,而不是由屏幕輸出
動作:
a : 追加,當前行后添加一行或多行
c :行替換,用c后面的字符串替換原數據行
i :插入,在當期行前插入一行或多行。d:刪除,刪除指定的行
p :打印,輸出指定的行
s : 字符串替換,用一個字符串替換另外一個字符串。格式為"行范圍s/舊字符串/新字符串/g"
sed '2p' student.txt 查看文件的第二行
sed -n '2p' student.txt
字符串替換
sed 's/舊字串/新字串/g' 文件名
sed '3s/60/99/g' student.txt
在第三行中,把60替換成90
sed -i '3s/60/99/g' student.txt
在第三行中,把60替換成90並直接寫入文件
sed -e 's/fengj//g;s/cang/g' student.txt
同時把'fengj' 和 'cang' 替換為空
sort命令與wc命令
####### 1 排序命令sort
sort[選項] 文件名
-f 忽略大小寫
-n 以數值型進行排序,默認使用字符串型排序
-r 反向排序
-t 執行分隔符,默認是分隔符是制表符
-k n[,m] 按照指定的字段范圍排序,從第n字段開始,m字段結束(默認到行尾)