shell編程值之正則表達式與字符截取(6)


正則表達式與通配符

  • 正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配。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字段結束(默認到行尾)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM