在文件某一行上添加一列mysql
#awk實現 awk -v a="add_chars" '{print $0} /REGE/{print $0,a}' file.txt 解釋:-v:引入一個變量a,/REGE/:使用正則匹配一行 #sed實現 sed '/REGE/{s/.&/& add_chars/g}' file.txt 解釋:/REGE/:匹配到正則REGE後進行替換動做
2.不一樣的行不一樣處理nginx
shell> awk -v a="aaa" -v b="bbb" 'NR<=4{if($6 ~ /TIME|ESTABLISHED/) print NR,$0,a;else if($6 ~ /LISTEN/) print NR,$0,b;else print NR,a,b } NR>4{print NR,$0,a,b}' netstat.txt 1 aaa bbb 2 aaa bbb 3 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 961/sshd bbb 4 tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN 22296/nginx.conf bbb 5 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1182/master aaa bbb 6 tcp 0 0 0.0.0.0:9180 0.0.0.0:* LISTEN 15297/httpd aaa bbb 7 tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 23316/xinetd aaa bbb 8 tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 13571/snmpd aaa bbb 9 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2131/mysqld aaa bbb 10 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 22296/nginx.conf aaa bbb 11 tcp 0 0 127.0.0.1:1446 127.0.0.1:80 TIME_WAIT - aaa bbb 12 tcp 0 0 127.0.0.1:3306 127.0.0.1:60675 TIME_WAIT - aaa bbb 13 tcp 0 0 127.0.0.1:3306 127.0.0.1:60663 TIME_WAIT - aaa bbb 14 tcp 0 0 127.0.0.1:3306 127.0.0.1:60668 TIME_WAIT - aaa bbb
解釋:分兩種狀況:NR<=4{...}和 NR>4{...},分別進行不一樣的動做sql
{...}內的動做,若是須要多個命令輔助時,能夠使用分號;隔開shell
3.多個條件匹配bash
awk '/nologin/ && NR<20 {if(NR<=2) print $1;else if(NR>2 && NR<10) print $2;else print $0}' passwd #區別: awk '/nologin/ && NR<20; {if(NR<=2) print $1;else if(NR>2 && NR<10) print $2;else print $0}' passwd #NR<20後面有分號,分號先後兩個部分會分別執行,即重複輸出
解釋:ssh
條件:/nologin/ && NR<+20 tcp
---條件中首先過濾出符合這兩個條件的行ide
動做:if(NR<=2) print $1;else if(NR>2 && NR<10) print $2;else print $0
ci
--在動做中對這些符合的行進一步處理it