1. 程式人生 > >linux正則表示式awk講解

linux正則表示式awk講解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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還可以列印自定義的內容,但是自定義的內容要用“”雙引號括起來。