亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    通過幾個案例講解linux下的awk命令

    shell編程三劍客里,awk比另外兩個命令grep、sed更加復雜,更加難以掌握,因為awk是可以作為一個編程語言的!難歸難,但該命令是必須要掌握的命令,因為它的功能實在太強大了!

    awk基本結構如下:

    awk [選項] 'pattern1 {action1} patten2 {action2} ……' filename
    • 單引號是為了和shell命令區(qū)分開來。

    • 大括號表示一個命令分組??梢允且粋€動作,或多個動作,如果是多個動作,則動作之間需要加上;或輸入enter鍵

    • pattern是模式,表示匹配到的行才進行action。模式可以是正則,或算術表達式等

    • pattern和action可以只有其一,但不能兩者都沒有

    awk常用的選項如下:

    • -F:指定分割符,分割符可以是字符也可以是一個正則表達式

    • -v val=value,定義一個變量并賦值

    下面,我來通過一個應用來講解awk命令的使用。下面是一個文本文件的部分內(nèi)容

    # head city.txt  北京 BEIJING BJ  上海 SHANGHAI SH  天津 TIANJIN TJ  重慶 CHONGQING ZQ  阿克蘇 AKESU AKS  ……

    現(xiàn)在的需求是,獲取每個城市的全拼,然后轉換為小寫形式再連接上hellowx.com。其他的信息全部給過濾掉。

    # awk 'NR%2==0{next}{print}' city.txt  | head -n 10 北京 BEIJING BJ 上海 SHANGHAI SH 天津 TIANJIN TJ 重慶 CHONGQING ZQ 阿克蘇 AKESU AKS 安寧 ANNING AN 安慶 ANQING AQ 鞍山 ANSHAN AS 安順 ANSHUN AS 安陽 ANYANG AY

    我們注意到,偶數(shù)行都是空白行。所以只要過濾偶數(shù)行就行了。這樣過濾掉了空白行。注意上面的NR表示當前行號,意思是偶數(shù)行全部過濾掉。next表示忽略當前行。

    接下就需要過濾第一和第三字段。

    # awk 'NR%2==0{next}{print $2}' city.txt  | head -n 10 BEIJING SHANGHAI TIANJIN CHONGQING AKESU ANNING ANQING ANSHAN ANSHUN ANYANG

    上面的$2表示第二個字段,結合print表示只打印第二個字段。最后就是轉換和連接的工作了,就需要使用tr命令了。

    # awk 'NR%2==0{next}{print $2}' city.txt  | head -n 10 | tr [A-Z] [a-z] | awk '{print $1"hellowx.com"}' beijinghellowx.com shanghaihellowx.com tianjinhellowx.com chongqinghellowx.com akesuhellowx.com anninghellowx.com anqinghellowx.com anshanhellowx.com anshunhellowx.com anyanghellowx.com

    tr命令是用來作轉換的,將全部大寫轉換我小寫,然后再用awk來連接上后面的字符串。

    對上面涉及的幾個命令,如果不是太熟悉可能不是那么容易理解。建議,可以一步一步的來。熟悉了第一步而,然后再去理解第二部。

    最后,希望大家可以認真去學習下這個命令,如果掌握了awk,就可以做出很多有意思的事情哦!

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號