Shell程式設計之正規表示式

2021-08-28 09:49:54 字數 2099 閱讀 5298

1.萬用字元

2.正規表示式與萬用字元元字元作用*

前乙個字元匹配0次或任意多次

.匹配除了換行符外任意乙個字元

^匹配行首。例如:^hello會匹配以hello開頭的行

$匹配行尾。例如:hello$會匹配以hello結尾的行

匹配中括號中指定的任意乙個字元,只匹配乙個字元

[^]匹配除中括號的字元意外的任意乙個字元

\轉義符,用於取消特殊符號的含義

\表示其前面的字元恰好出現n次

\表示其前面的字元出現不小於n次

\表示其前面的字元至少出現n次,最多出現m次

1.cut欄位提取命令[列提取]

如想獲得/etc/passwd下獲得指定使用者名稱user1和user2

cut預設\t為其分隔符,故使用cut擷取df -h無效

2.printf命令

輸出格式

使用例項

printf

'%s/t%s/t%s/n' 1 2 3 4 5 6

#輸出結果

#1 2 3

#4 5 6

在awk命令的輸出中支援print和printf命令

3.awk命令

動作(action) 例項

awk

'' student.txt#$2表示第二列,$4第四列,awk是一行一行讀處理的,輸出格式需要用雙引號標識

df -h |

awk''

#擷取第五列

awk'begin' student.txt

#begin作用,在所有資料處理之前執行

#列印結果

#this is beginning

#name mark

#furong 85

#fengj 60

#cang 70

cat /etc/passwd |

grep

"/bin/bash"

|awk

''#結果(因為最起初會載入第一行,fs表示以指定符號分割)

#root:x:0:0:root:/root:/bin/bash

#user1 500

#user2 501

cat /etc/passwd |

grep

"/bin/bash"

|awk

'begin'

#結果#root 0

#user1 500

#user2 501

4.sed命令 動作

例項**

sed

'2p' student.txt

#id name gender mark

#1 furong f 85

#1 furong f 85

#2 fengj f 60

#3 cang f 70

sed -n '2p' student.txt#一般加p的動作,都適用-n選項

#1 furong f 85

sed'2,4d' student.txt

#id name gender mark 刪除第二行到第四行,只剩第一行了

sed'2a 1-1 jack g 90' student.txt#在指定行之後新增

#id name gender mark

#1 furong f 85

#1-1 jack g 90

#2 fengj f 60

#3 cang f 70

1.排序命令sort

例項**

sort -n -t ":" -k "3,3" /etc/passwd#以數值型為基準,:為分隔符,按照第三列排序/etc/passwd檔案

2.統計命令wc

例項**

wc /etc/passwd#獲得指定檔案的行數,單詞數和字元數

shell程式設計之正規表示式

1 正規表示式 其實就是一種規範,也就是模式,約束字串等符合什麼樣的格式,比如要求字串必須a開頭,t結尾,符合這樣條件的字串就要用到正規表示式。2 兩套庫 gnu linux中有有兩套庫用足正規表示式程式設計,posix庫,自帶的 pcre庫,perl,功能比較全,本文採用perl。3 初體驗 eg...

Shell程式設計之正規表示式

目錄 正規表示式 概述 基礎正規表示式 前乙個字元匹配 0 次,或任意多次 匹配除了換行符外任意乙個字元 匹配行首,匹配行尾 匹配中括號中指定的任意乙個字元,只匹配乙個字元 匹配除中括號的字元以外的任意乙個字元 轉義符 表示其前面的字元恰好出現 n 次 表示其前面的字元出現不小於 n 次 匹配其前面...

Shell程式設計之正規表示式總結

正規表示式 regular expression 是一種文字模式,描述了一種字串匹配模式。可以用來檢查乙個串是否包含有某種子串。在linux的shell程式設計中廣泛運用。正規表示式分為兩類 基本正規表示式 basic regular expression bre和擴充套件正規表示式 extende...