awk 內置變量


awk 內置變量

 

FS 設置輸入域分隔符,等價於命令行 -F選項

OFS 輸出域分隔符


NF 瀏覽記錄的域的個數
NR 已讀的記錄數


RS 控制記錄分隔符

ORS 輸出記錄分隔符

substr 截取指定的字符串

gsub 替換指定字符串 

實例:

 

1. FS設置域分隔符 等於-F。

過濾出了/etc/passwd 文件中的第一列

[root@centos-1 ~]# awk 'BEGIN{FS=":"}{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync

 

2.OFS 輸出域分隔符。

  我們可以改變文件內容的分割符號,並且打印出來

文件內容如下

[root@centos-1 ~]# cat abc
123  456
abc  bcd
aaa  bbb

 

[root@centos-1 ~]# awk 'BEGIN{OFS=","}{print $1,$2}' abc
123,456
abc,bcd
aaa,bbb

注意:這種情況需要多列,單列是不行的

 

3.NF 瀏覽記錄的域的個數

打印出每行有幾列

[root@centos-1 ~]# awk '{print NF}' abc
2
2
2

 

4.NR 已讀的記錄數

awk 讀了幾行內容

[root@centos-1 ~]# awk '{print NR}' abc
1
2
3

 

 

 

 

5、ORS 輸出記錄分隔符

awk規定,對於文本文件,默認情況下,一條記錄對應一行,即記錄之間的默認分隔符是換行符;而一條記錄又可以分為多個字段,默認字段分隔符為空格

[root@centos-1 ~]# cat abc
123
abc
aaa

[root@centos-1 ~]# awk 'BEGIN{ORS=","}{print $0}' abc
123,abc,aaa,[root@centos-1 ~]#

 

所以我們可以在編輯某些文件時,可以讓文件內容橫排顯示,並且加上一定的分割符號

 

 

6.substr($n,n)  打印指定的列,並且從指定的第n個字符開始打印

  substr($n,n,m)  打印指定的列,並且從指定的第n個字符開始打印,到m個字符停止

 

 [root@centos ~]# awk 'BEGIN{FS=":"}{if(NR==1){print substr($NF,1)}}' /etc/passwd

 /bin/bash

 

[root@centos ~]# awk 'BEGIN{FS=":"}{if(NR==1){print substr($NF,2)}}' /etc/passwd

 bin/bash

 

[root@centos ~]# awk 'BEGIN{FS=":"}{if(NR==1){print substr($NF,3)}}' /etc/passwd

in/bash

 

過濾IP

[root@server2 ~]# ifconfig |awk '{if(NR==2){print substr($2,6,12)}}'
192.168.3.12

 

將第一行的每個字符后面加一個空格

[root@server2 ~]# awk 'BEGIN{ORS=" "}{if(NR==1){for(i=1;i<=length();i++){print substr($0,i,1)}print "\n"}}' /etc/passwd
r o o t : x : 0 : 0 : r o o t : / r o o t : / b i n / b a s h

 

7.將第二段的數字替換成行號

[root@centos6 ~]# cat abc
hshs a=1 jsjs
hds a=1 isi
hshppls a=1 jswyuwe
hyeyeushs a=1 jspppjs
h555shs a=1 jsjs888dh
hshggghs a=1 jshehhjs
hshhhhshes a=1jsjs7iii
hshshhsjs a=1 suuejejs
hshgewheues a=1 jejejsjs
hsujejeuhs a=1 77ieh2ssjs

[root@centos6 ~]# awk '{sub($2,"a="NR);print > "abc"}' abc

print > "abc":將更改后的數據重定向到源文件當中。文件名必須要用雙引號引起來

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM