grep、cut、awk、send

grep

*

前一個字符匹配0次或者任意多次

grep “aa*” test.txt    匹配有包含1個a的行

.

匹配除了換行符外任意一個字符

grep a.b test.txt     a開頭,b結尾,中間字符任意

^

匹配行首

grep ^a”  test.txt      行首爲a開頭

grep  -n  ^$”            匹配空行,-n顯示行號  

$

匹配行尾

grep $b test.txt       行尾爲b

[]

匹配括號中指定的任意一個字符,只匹配一個字符

grep [0-9] test.txt    grep "[a-zA-Z]" test.txt

[^]

相對於[]取反

grep [^0-9] test.txt

\

轉義符,取消特殊符號的含義

\{n\}

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

grep [0-9]\{2\}        0-9的字符恰好出現2次的

grep [1][3-8][0-9]\{9}  匹配手機號碼

\{n,\}

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

grep [0-9]\{2,\}        0-9的字符出現不小於2次的

\{n,m\}

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

grep [0-9]\{2,3\}       

-n顯示行號

-v取反

 

字符截取命令cut

cut [選項] 文件名

-f列號

-d分隔符:

cut出第2列 , 默認分隔符是tab鍵

wKioL1VIVgHSUGXUAAA7WHM3oAQ088.jpg

    cut -d ":" -f 1,3 /etc/passwd

以:爲分隔符,截取第1,3列

wKiom1VIVLiiiBt5AAA-RK1lbPI802.jpg 

cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1

提取系統中所有普通用戶的用戶名

 

 

printf命令

print ‘輸出類型輸出格式’輸出內容

輸出類型

%ns:輸出字符串,n代表幾個字符

%ni:輸出正數,n代表幾個數字

$m.nf:輸出浮點數,m和n是數字,分別代表整數位和小數位

輸出格式:

\n換行

\r回車,Enter鍵

\t水平輸出退格鍵,Tab鍵

\v垂直輸出退格鍵,Tab鍵

\a輸出警告音

\b輸出空格鍵,Backspace鍵

\f清除屏幕

 

printf '%s' $(cat cut.txt)     原始無格式輸出

wKiom1VIVPHTzPn1AABS7nWqTp4258.jpg 

printf '%s\t %s\t %s\t %s\t \n' $(cat cut.txt)定義格式輸出

 wKiom1VIVP2Q_M1kAABMfGu7C84221.jpg

 

awk命令

awk 條件1{動作1} 條件2{動作2}...文件名 

條件:

x>10判斷變量x是否大於10

x>=10

x<=10

動作:

格式化輸出

流程控制語句

#df -h | awk {printf $1 \t $6 \n}

wKioL1VIVqnDdoVZAAB9OEAB9Kg770.jpg 

 

#df -h | grep "/dev/sda3" | awk '{printf $5}' | cut -d "%" -f 1

wKiom1VIVUPBWZWyAAAqpHmq5S4505.jpg 

 

動作 BEGIN

所有數據讀取之前,執行,再執行後面數據

wKioL1VIVrvzNa-SAAA6Nqbd0CM034.jpg 

 

內置變量FS

定義分隔符

# awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}' /etc/passwd

wKiom1VIVWiiyuGUAABaH122jeg235.jpg 

 

動作END

所有數據處理完之後執行

# awk 'END{print "this end"}{print $1 "\t" $4}' cut.txt 

 

wKiom1VIVXHSugY7AAA_LeidlTM848.jpg 

print = printf \n print會自動換行

 

 

sed命令流編輯器,可對命令結果進行處理

sed [選項]‘動作’文件名

-n只輸出sed命令處理過的行

-e允許對輸出數據應用多條sed命令編輯

-i用sed修改的結果直接修改讀取數據的文件,而不是屏幕輸出

動作

a\:追加,在當前行後添加一行或多行。添加多行時,除最後一行外,每行末尾需要用 \ 代表數據未完結

c\:行替換,用c後面的字符串替換原數據行

i\:插入,在當前行前插入一行或多行

d:刪除,刪除指定行

p:打印,輸出指定行

s:字串替換,用一個字符串替換另一個字符串s/舊字符串/新字符串/g

 

#sed -n 2pstudent.txt

處理第2行輸出

wKiom1VIVZiAtqG4AAAtg1QGkeM072.jpg 

#sed '2,3d' students.txt  

刪除第2-3行

 

#sed '2a nihao\' students.txt 

在第2行之後插入新行,內容爲nihao

 

# sed '2c nonono' students.txt 

替換第2行

#sed '2s/91/99/g' students.txt 

把第2行的字符串91替換爲99

 

 

 

 

 

 

 

字符處理命令

排序命令sort

sort [選項] 文件名

-f忽略大小寫

-n以數值型進行排序,默認使用字符串排序

-r反向排序

-t指定分隔符,默認分隔符是製表符

-k n[,m]安裝指定的字段範圍排序

#sort -n -t ":" -k 3,3 /etc/passwd

按照uid從小打到排序

統計命令wc

wc [選項] 文件名

-l只統計行數

-w只統計單詞數

-m只統計字符數

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章