linux正則表示式awk講解
阿新 • • 發佈:2018-11-15
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
wk和sed一樣是流式編輯器,它也是針對文件中的行來操作的,一行一行的去執行。awk比sed更加強大,它能做到sed能做到的,同樣也能做到sed不能做到的。awk常用來分段;
awk不用加任何引數就可以實現 + ? * . | 這些特殊符號;
1、擷取文件中的某個段
1 2 3 4 5 6 7 8 9 |
[[email protected] ~]
# head -n2 passwd |awk -F: '{print $1}'
root
bin
[[email protected] ~]
# head -n2 passwd |awk -F: '{print $0}' root:x:0:0:root:
/root
:
/bin/bash
bin:x:1:1:bin:
/bin
:
/sbin/nologin
[[email protected] ~]
# head -n2 passwd |awk -F: '{print $1,$3,$7}'
root 0
/bin/bash
bin 1
/sbin/nologin
|
-F 選項的作用是指定分隔符,如果不加-F指定,則以空格或者tab為分隔符。 Print為列印的動作,用來打印出某個欄位。$1為第一個欄位,$2為第二個欄位,依次類推,有一個特殊的那就是$0,它表示整行。
{ }內可以列印多個欄位$1,$3,$7 列印第1、3、7段,中間用逗號隔開;
列印分段預設分隔符為空格,可以自定義分隔符,分隔符需要用冒號括起來;也可以OFS定義輸出分隔符;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[[email protected] ~]
# awk -F: '{print $3,$4}' 1.txt |head -5
0 0
1 1
2 2
3 4
4 7
[[email protected] ~]
# awk -F: '{print $3":"$4}' 1.txt |head -5
0:0
1:1
2:2
3:4
4:7
[[email protected] ~]
# awk -F: 'OFS="#"{print $3,$4}' 1.txt |head -5
0
#0
1
#1
2
#2
3
#4
4
#7
|
1 2 3 |
[[email protected] ~]
# head -n2 passwd |awk -F: '{print $1"#""@"$3"#"$7}'
root
#@0#/bin/bash
bin
#@1#/sbin/nologin
|
注意awk的格式,-F後緊跟單引號,然後裡面為分隔符,print的動作要用 { } 括起來,否則會報錯。print還可以列印自定義的內容,但是自定義的內容要用“”雙引號括起來。