根據模式一次從檔案中抽取一行文字,對這行文字進行切片(預設使用空白字元作為分隔符)
[root@server mnt]
# cat test
this | is | a |
file
$1$2
$3$4
[root@server19 mnt]
# awk '' test
this is a file
[root@server19 mnt]
# awk '' test
this
[root@server19 mnt]
# awk '' test
is[root@server19 mnt]
# awk '' test
a[root@server19 mnt]
# awk '' test
file
[root@server19 mnt]
# awk '' test
this is
[root@server19 mnt]
# awk '' test
thisis
以:為分隔符,列印檔案/etc/passwd的第一列和第三列
[root@server19 mnt]
# awk -f ":" '' /etc/passwd
root 0
bin 1
daemon 2
...
[root@server19 mnt]
# awk '' /etc/passwd
/etc/passwd 1
/etc/passwd 2
/etc/passwd 3
/etc/passwd 4
...
[root@server19 mnt]
# awk -f: '' /etc/passwd
1 72 7
3 74 7
[root@server19 mnt]
# awk -f: '/bash$/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
student:x:1000:1000:student user:/home/student:/bin/bash
[root@server19 mnt]
# awk -f: 'nr==3 ' /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@server19 mnt]
# awk -f: 'nr % 2 ==0 ' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@server19 mnt]
# awk -f: 'nr >=3 && nr <=5 ' passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@server19 mnt]
# awk -f: '$# >=0 && $3 <=2 ' /etc/passwd
root 0
bin 1
daemon 2
例項:
[root@server19 mnt]
# awk -f: 'begin end ' passwd
redhat
1root:x:0:0:root:/root:/bin/bash
2bin:x:1:1:bin:/bin:/sbin/nologin
3daemon:x:2:2:daemon:/sbin:/sbin/nologin
4adm:x:3:4:adm:/var/adm:/sbin/nologin
5lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6sync:x:5:0:sync:/sbin:/bin/sync
7shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
westos
[root@server19 mnt]
# vim test.txt
hui hui xx
***x ni xx
[root@server19 mnt]
# awk 'beginend' test.txt
7
1.if單分支語句
[root@server19 mnt]
# awk -f: 'begin}end' /etc/passwd
2
[root@server19 mnt]# awk -f:
'begin}end'
/etc/passwd
31
2.if雙分支語句
[root@server19 mnt]
# awk -f: 'beginelse}end' /etc/passwd
31 9
3.for迴圈
生成1-5序列
[root@server19 mnt]
# awk 'begin}'12
345[root@server19 mnt]
# seq 5 ##seq命令可以直接生成12
345
4.while迴圈
語法一:
[root@test ~]
# awk 'i=1 {} begin }' test.txt 12
3[root@test ~]
#
語法二:
[root@test ~]
# awk 'begin while (i<3)}' test.txt 12
3[root@test ~]
#
文字處理awk
awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。實際上awk確實有自己的程式語言 樣式掃瞄和處理語言。awk 1.命令列方式 awk f...
awk文字處理
awk是一種程式語言,用於在linux環境中對文字資料進行處理 二 awk的兩種語法格式 awk options conmmand filenames awk options f awk script file filenames f 定義輸入字段分隔符,預設分隔符是空格或製表符 命令begin e...
awk文字處理
awk文字處理 基於模式匹配檢查輸入文字,逐行處理並輸出 通常用在shell指令碼中,獲取指定的資料 單獨用時,可對文字資料做統計 一 語法格式 格式1 命令 awk 選項 條件 格式2 awk 選項 條件 檔案.若有多條語句,可用分號分隔 print是最常用的指令 awk f etc passwd...