awk 基礎語法 2 awk變數

2021-10-01 16:33:25 字數 3133 閱讀 5507

$0當前處理行的所有記錄

$1,$2,$3...$n檔案中每行以間隔符號分割的不同字段

nf當前記錄的字段數(列數)

$nf最後一列

fnr/nr行號

fs定義間隔符

ofs定義輸出字元分隔符,預設空格

rs輸入記錄分隔符,預設換行

ors輸出記錄分隔符,預設換行

1.2.1. 案例資料
# chen @ localhost in ~/shell [17:25:59] 

$ cat -n passwd

1 root:x:0:0:root:/root:/bin/zshi

2 cccccccccccccccccccbbbbbbbbbbbbbbb:aa

3 in:x:1:1:bin:/bin:/sbin/nologin

4 ddaemon:x:2:2:daemon:/sbin:/sbin/nologin

5 adm:x:3:4:adm:/var/adm:/sbin/nologin

6 sync:x:5:0:sync:/sbin:/bin/sync

7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

1.2.2. 輸出passwd檔案中所有行
# chen @ localhost in ~/shell [17:51:07] 

$ awk

''passwd

root:x:0:0:root:/root:/bin/zshi

cccccccccccccccccccbbbbbbbbbbbbbbb:aa

in:x:1:1:bin:/bin:/sbin/nologin

ddaemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

1.2.3. 輸出passwd檔案中1至5行
# chen @ localhost in ~/shell [17:52:34] 

$ awk

'nr==1,nr==5 '

passwd

root:x:0:0:root:/root:/bin/zshi

cccccccccccccccccccbbbbbbbbbbbbbbb:aa

in:x:1:1:bin:/bin:/sbin/nologin

ddaemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

1.2.4. 輸出passwd檔案中1,5行
# chen @ localhost in ~/shell [17:55:10] 

$ awk

'nr==1 || nr==5 '

passwd

root:x:0:0:root:/root:/bin/zshi

adm:x:3:4:adm:/var/adm:/sbin/nologin

1.2.5. 輸出passwd檔案中每行第一列,倒數第一列,倒數第二列
# chen @ localhost in ~/shell [17:59:57] 

$ awk -f: ''

passwd

root /bin/zshi /root

cccccccccccccccccccbbbbbbbbbbbbbbb aa cccccccccccccccccccbbbbbbbbbbbbbbb

in /sbin/nologin /bin

ddaemon /sbin/nologin /sbin

adm /sbin/nologin /var/adm

sync /bin/sync /sbin

shutdown /sbin/shutdown /sbin

1.2.6. 輸出passwd檔案中每行的列數
# chen @ localhost in ~/shell [18:00:52] 

$ awk -f: ''

passwd72

7777

7

1.2.7. 輸出passwd檔案中包含adm的第一列
# chen @ localhost in ~/shell [18:03:05] 

$ awk -f: '/adm/'

passwd

adm

1.2.8. 以@@@為分隔符,輸出passwd檔案中的第一列和最後一列
# chen @ localhost in ~/shell [18:07:29] 

$ awk -f: 'begin '

passwd

root@@@/bin/zshi

cccccccccccccccccccbbbbbbbbbbbbbbb@@@aa

in@@@/sbin/nologin

ddaemon@@@/sbin/nologin

adm@@@/sbin/nologin

sync@@@/bin/sync

shutdown@@@/sbin/shutdown

# 方法2

# chen @ localhost in ~/shell [18:08:26] c:1

$ awk

'begin '

passwd

# 方法3

# chen @ localhost in ~/shell [18:08:51]

$ awk

'begin '

passwd

awk 呼叫變數

一 用awk 有以下幾種方法去呼叫變數 1.awk a 111 b 222 yourfile 注意 變數位置要在 file 名之前,否則就不能呼叫。還有 於 begin 中是不能呼叫這些的 variable.要用之後所講的第二種方法才可解決.2.awk v a 111 v b 222 yourfil...

awk 系列 如何使用 awk 內建變數

我們將逐漸揭開 awk 功能的神秘面紗,在本節中,我們將介紹 awk 內建built in變數的概念。你可以在 awk 中使用兩種型別的變數,它們是 使用者自定義user defined變數 我們在第八節中已經介紹了 和內建變數。awk 內建變數示例 awk 內建變數已經有預先定義的值了,但我們也可...

Shell 基礎(變數設定,awk工具)

目錄概述 變數常用 vim awk shell從誕生之初,就和普通的pc使用者無緣了,工程師應該會喜歡shell,maybe是這個樣子的。shell 提供了你和作業系統linux之間的通訊方式。shell的工作方式有兩種 你在終端寫出的shell命令,計算機是無法直接理解的,需要shell直譯器來完...