【shell筆記>命令】grep,sed,awk

grep

grep的基本用法

grep命令是支持正則表達式的一個多用途文本搜索工具,一般格式為

grep 選項 模式 文件

選項 意義
-c 只輸出匹配行的數(shù)量
-i 搜索時忽略大小寫
-h 查詢多文件時不顯示文件名
-l 只列出符合匹配的文件名,而不列出具體的匹配行
-n 列出所有的匹配行,并顯示行號
-s 不顯示不存在或無匹配文本的錯誤信息
-v 顯示不包含匹配文本的所有行
-w 匹配整詞
-x 匹配正行
-r 遞歸搜索,不僅搜索當前目錄,而且搜索子目錄
-q 禁止輸出任何結(jié)果,以退出狀態(tài)表示搜索是否成功
-b 打印匹配行距文件頭部的偏移量,以字節(jié)為單位
-o 與-b選項結(jié)合使用,打印匹配的詞距文件頭部的偏移量,以字節(jié)為單位
-E 支持擴展的正則表達式
-F 不支持正則表達式,按照字符串的字面意思進行匹配

grep命令的模式十分靈活,可以是字符串,也可以是變量,還可以是正則表達式。注意,無論模式是何種形式,只要模式中包含空格,就需要使用雙引號將模式引起來。

grep與正則表達式

  1. 匹配行首,用元字符^
  1. 設(shè)置大小寫,用-i

  2. 匹配重復字符,用., *

  3. 轉(zhuǎn)義符,用\

  4. POSIX字符類

    類名 意義
    [:upper:] 表示大寫字母[A~Z]
    [:lower:] 表示小寫字母[a~z]
    [:digit:] 表示阿拉伯數(shù)字[0~9]
    [:alnum:] 表示大小寫字母和阿拉伯數(shù)字
    [:space:] 表示空格鍵和TAB鍵
    [:alpha:] 表示大小寫字母
    [:cntrl:] 表示Ctrl
    [:graph:]或[:print:] 表示ASCII碼
    [:xdigit:] 表示16進制數(shù)字[09AFa~f]
  5. 精確匹配:用\<\>

  6. 或字符,grep需要加上-E選項才能支持它,用|表示

grep命令族

grep: 標準grep命令

egrep: 擴展grep命令,支持基本和拓展正則表達式

fgrep: 快速grep命令,不支持正則表達式


sed命令

sed是一個非交互式文本編輯器,它可對文本文件和標準輸入進行編輯,標準輸入可以是來自鍵盤輸入、文件重定向、字符串、變量,甚至來自管道的文本。sed適用于以下三中場合:

  • 編輯相對交互式文本編輯器而言太大的文件。
  • 編輯命令太復雜,在交互式文本編輯器中難以輸入的情況。
  • 對文件掃描一遍,但是需要執(zhí)行多個編輯函數(shù)的情況。

基本用法

sed只是對緩沖區(qū)中原始文件的副本進行編輯,并不編輯原始文件。如果需要保存文件改動的內(nèi)容,需要將輸出重定向到另一個文件。

調(diào)用sed有三種方式,一種為Shell命令行方式,另外兩種是將sed命令寫入腳本文件,然后執(zhí)行該腳本文件。

  1. 在Shell命令行輸入命令調(diào)用sed,格式為sed [選項] 'sed命令' 輸入文件
  2. sed命令插入腳本文件后,然后通過sed命令調(diào)用它,格式為sed [選項] -f sed 腳本文件 輸入文件
  3. sed命令插入腳本文件后,最常用的方法是設(shè)置該腳本文件為可以執(zhí)行,然后直接執(zhí)行該腳本文件,格式為./sed腳本文件 輸入文件

第三種方式腳本文件需要以sha-bang(#!)符號開頭。無論哪種方式,如果沒有指定輸入文件,sed將從標準輸入接收輸入。常用選項有三個

選項 意義
-n 不打印所有的行到標準輸出
-e 表示將下一個字符串解析為sed編輯命令,如果只傳遞一個,可以省略
-f 表示正在調(diào)用sed腳本文件

sed命令主要由定位文本行和sed編輯命令兩部分組成,有兩種方式定位文本:

  • 使用行號,指定一行,或者指定行號范圍
  • 用正則表達式
選項 意義
x x為指定行號
x,y 指定從x到y(tǒng)的行號范圍
/pattern/ 查詢包含模式的行
/pattern/pattern/ 查詢包含兩個模式的行
/pattern/,x 從pattern匹配行到x號行
x,/pattern/ 上一條反過來
x,y! 查詢不包括x和y行號的行

編輯命令

選項 意義
p 打印匹配行
= 打印文件行號
a\ 在定位行號后追加文本信息
i\ 在定位行號之前插入文本信息
d 刪除定位行
c\ 用新文本替代定位文本
s 使用替換模式替換相應(yīng)模式
r 從另一個文件中讀文本
w 將文本寫入到一個文件
y 變換字符
q 第一個模式匹配后退出
l 顯示與八進制ASCII碼等價的控制字符
{} 在定位行執(zhí)行的命令組
n 讀取下一個輸入行,用下一個命令處理新的行
h 將模式緩沖區(qū)的文本復制到保持緩沖區(qū)
H ...追加到保持緩沖區(qū)
x 互換模式緩沖區(qū)和保持緩沖區(qū)內(nèi)容
g 將保持模式緩沖區(qū)的內(nèi)容復制到模式緩沖區(qū)
G ....追加到模式緩沖區(qū)

示例

測試文件內(nèi)容:

    This is a Certificate Request file:

    It should be mailed to zawu@seu.edu.cn

    =====================================================
    Certificate Subject:

    /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

    The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
    To install this user certificate, please save this e-mail message into the following file.

    /home/alloy/linuxshell/CH02/usercert.pem

sed -n: 不打印sed編輯對象的全部內(nèi)容

wsx@wsx-ubuntu:~/桌面$ sed -n '1p' input
    This is a Certificate Request file:

wsx@wsx-ubuntu:~/桌面$ sed '1p' input
    This is a Certificate Request file:
    This is a Certificate Request file:

    It should be mailed to zawu@seu.edu.cn

    =====================================================
    Certificate Subject:

    /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

    The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
    To install this user certificate, please save this e-mail message into the following file.

    /home/alloy/linuxshell/CH02/usercert.pem

利用sed命令打印范圍行:

wsx@wsx-ubuntu:~/桌面$ sed -n '3,6p' input 
    It should be mailed to zawu@seu.edu.cn

    =====================================================
    Certificate Subject:

sed -e: sed傳遞多個編輯命令時使用

wsx@wsx-ubuntu:~/桌面$ sed -n '/Certificate/=' input 
1
6

wsx@wsx-ubuntu:~/桌面$ sed -n -e '/Certificate/p' input  -e '/Certificate/=' input
    This is a Certificate Request file:
1
    Certificate Subject:
6


sed -f:調(diào)用sed腳本文件時才起作用

wsx@wsx-ubuntu:~/桌面$ sed '/file:/a\We append a new line.' input 
    This is a Certificate Request file:
We append a new line.

    It should be mailed to zawu@seu.edu.cn

    =====================================================
    Certificate Subject:

    /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

    The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
    To install this user certificate, please save this e-mail message into the following file.

    /home/alloy/linuxshell/CH02/usercert.pem

腳本用法:

#! /bin/sed -f 
/file:/a\       #a\表示在此處添加文本

# 添加文本
We append a new line.\
We append a another line.

sed基本編輯命令可以放在單引號內(nèi),也可放在單引號外。

sed文本定位的一組例子

  1. 匹配元字符,用轉(zhuǎn)義符\進行屏蔽

    wsx@wsx-ubuntu:~/桌面$ sed -n '/\./p' input 
     It should be mailed to zawu@seu.edu.cn
     /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
     The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
     To install this user certificate, please save this e-mail message into the following file.
     /home/alloy/linuxshell/CH02/usercert.pem
    
    
  2. 使用元字符進行匹配

    $在sed命令中表示最后一行

    wsx@wsx-ubuntu:~/桌面$ sed -n '$p' input
     /home/alloy/linuxshell/CH02/usercert.pem
    
  3. !符號,打印不在2-10的行

    wsx@wsx-ubuntu:~/桌面$ sed -n '2,10!p' input 
     This is a Certificate Request file:
     To install this user certificate, please save this e-mail message into the following file.
    
     /home/alloy/linuxshell/CH02/usercert.pem
    
  4. 使用行號和關(guān)鍵字匹配限定行范圍

    wsx@wsx-ubuntu:~/桌面$ sed -n '/seugrid/,$p' input 
     /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
    
     The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
     To install this user certificate, please save this e-mail message into the following file.
    
     /home/alloy/linuxshell/CH02/usercert.pem
    

sed基本編輯命令的一組例子

  1. 插入文本:運行腳本,以輸入文件名作為參數(shù)

    #!/bin/sed -f
    /file:/i\             # i\表示此處換行插入文本
    We insert a new line.
    
  2. 修改文本

    #!/bin/sed -f
    
    /file:/c\             #c\表示此處換行修改文本
    We modify this line      #修改文本內(nèi)容
    
  3. 刪除文本,符號是d,不帶\,與其他命令有所區(qū)別,非常靈活。下面刪除第一行和最后一行。

    wsx@wsx-ubuntu:~/桌面$ sed '1d' input
    
     It should be mailed to zawu@seu.edu.cn
    
     =====================================================
     Certificate Subject:
    
     /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
    
     The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
     To install this user certificate, please save this e-mail message into the following file.
    
     /home/alloy/linuxshell/CH02/usercert.pem
    wsx@wsx-ubuntu:~/桌面$ sed '$d' input
     This is a Certificate Request file:
    
     It should be mailed to zawu@seu.edu.cn
    
     =====================================================
     Certificate Subject:
    
     /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
    
     The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
     To install this user certificate, please save this e-mail message into the following file.
    
    
  4. 替換文本,格式s/被替換的字符串/新字符串/[替換選項]

    選項 意義
    g 全局匹配替換(替換所有的)
    p 與-n選項結(jié)合,只打印替換行
    w 文件名 表示將輸出定向到一個文件
    sx@wsx-ubuntu:~/桌面$ sed 's/Certificate/CERTIFICATE/' input
     This is a CERTIFICATE Request file:
    
     It should be mailed to zawu@seu.edu.cn
    
     =====================================================
     CERTIFICATE Subject:
    
     /O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
    
     The above string is known as your user certificate subject, and t uniquely identifies theis user. $88
     To install this user certificate, please save this e-mail message into the following file.
    
     /home/alloy/linuxshell/CH02/usercert.pem
    wsx@wsx-ubuntu:~/桌面$ sed -n 's/Certificate/CERTIFICATE/p' input
     This is a CERTIFICATE Request file:
     CERTIFICATE Subject:
    
  5. 寫入到一個新文件

    wsx@wsx-ubuntu:~/桌面$ sed -n 's/Certificate/CERTIFICATE/pg' input
     This is a CERTIFICATE Request file:
     CERTIFICATE Subject:
    wsx@wsx-ubuntu:~/桌面$ 
    wsx@wsx-ubuntu:~/桌面$ sed -n '1,5 w output' input
    wsx@wsx-ubuntu:~/桌面$ cat output 
     This is a Certificate Request file:
    
     It should be mailed to zawu@seu.edu.cn
    
     =====================================================
    
    
  6. 從文件中可讀入文本,格式指定地址 r 文件名

  7. 退出命令:q

  8. 變換命令:sed命令的y表示字符變換(不等長時會報錯)

    wsx@wsx-ubuntu:~/桌面$ sed 'y/fmj/FMJ/' input 
     This is a CertiFicate Request File:
    
     It should be Mailed to zawu@seu.edu.cn
    
     =====================================================
     CertiFicate SubJect:
    
     /O=Grid/OU=GlobusTest/OU=siMpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
    
     The above string is known as your user certiFicate subJect, and t uniquely identiFies theis user. $88
     To install this user certiFicate, please save this e-Mail Message into the Following File.
    
     /hoMe/alloy/linuxshell/CH02/usercert.peM
    
    
  9. 顯示控制字符:控制字符就是非打印字符,如退格鍵、F1鍵等。使用sed l命令。

  10. 在命令行執(zhí)行命令組,用{}符號,與-e選項功能類似。

    wsx@wsx-ubuntu:~/桌面$ sed -n '/Certificate/{p;=}' input
        This is a Certificate Request file:
    1
        Certificate Subject:
    6
    

awk編程

awk是三位前輩開發(fā)的編程語言,awk是三位創(chuàng)建者的首字母。基本語言與C類似。

目前,使用的是gawk,Linux系統(tǒng)中/bin目錄下有awkgawk兩個命令,前者實際上是后者的鏈接。利用gawk語言可以實現(xiàn)數(shù)據(jù)查找、抽取文件中的數(shù)據(jù)、創(chuàng)建管道流命令等功能。

我們可以簡單地將awk編程模型分位三個階段:

  • 讀輸入文件執(zhí)行的執(zhí)行代碼段(由BEGIN關(guān)鍵字標識)
  • 讀取輸入文件時執(zhí)行代碼段
  • 讀輸入文件之后的執(zhí)行代碼段(由END關(guān)鍵字標識)

調(diào)用方法分為兩種:Sehll命令行方式;腳本執(zhí)行。

awk模式匹配

任何awk語句都由模式和動作組成。模式是一組用于測試輸入行是否需要執(zhí)行動作的規(guī)則,動作是包含語句、函數(shù)和表達式的執(zhí)行過程。awk支持所有的正則表達式元字符,以及?+兩個擴展元字符。

wsx@wsx-ubuntu:~/桌面$ awk '/^$/{print "This is a blank line."}' input
This is a blank line.
This is a blank line.
This is a blank line.
This is a blank line.
This is a blank line.

單引號中間為awk命令,由兩部分組成,以“/”符號分隔,^$是模式,花括號部分是動作。該awk表示一旦讀入的輸入文件是空行,就打印后面的字符串This is a blank line

使用腳本(將命令輸入一個文件中):

wsx@wsx-ubuntu:~/桌面$ awk -f src.awk input
This is a blank line.
This is a blank line.
This is a blank line.
This is a blank line.
This is a blank line.

內(nèi)容不止這些,我們先談?wù)勂渌拍睢?/p>

記錄和域

awk認為輸入文件是結(jié)構(gòu)化的,awk將每個輸入文件行定義為記錄,行中的每一個字符串定義為域,域之間用空格、TAB鍵或其他符號進行分隔,分隔域的符號就叫分隔符。(這個結(jié)構(gòu)化概念需要理解,很多命令和編程中都有涉及)

wsx@wsx-ubuntu:~/桌面$ awk '{print $2,$1,$4,$3}' sturecord 
Hao Li 025------------ njue
Ju Zhang 025---------- nju
Bin Wang 025------ seu
wsx@wsx-ubuntu:~/桌面$ awk '{print $0}' sturecord 
Li Hao  njue 025------------ 
Zhang Ju    nju 025---------- 
Wang Bin    seu 025------

可以通過對域的操作對文本進行重新排列,也可以用print $0輸入所有域。

wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {one=1;two=2}{print $(one+two)}' sturecord 
njue
nju
seu

BEGIN字段中定義onetwo兩個變量并賦值。

-F選項用來改變分隔符,例如只以'\t'為分隔符。

wsx@wsx-ubuntu:~/桌面$ awk -F'\t' '{print $2}' sturecord 
025------------ 
025---------- 
025------

注意-F-f的區(qū)別。

awk還提供了另一種更方便的方法改變分隔符。

wsx@wsx-ubuntu:~/桌面$ cat sturecord 
Li Hao,njue,025------------ 
Zhang Ju,nju,025---------- 
Wang Bin,seu,025------
wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {FS=","}{print $1, $3}' sturecord 
Li Hao 025------------ 
Zhang Ju 025---------- 
Wang Bin 025------

關(guān)系和布爾運算符

awk定義了一組關(guān)系運算符用于awk模式匹配。如下表

運算符 意義
< 小于
> 大于
<= 小于或等于
>= 大于或等于
== 等于
!= 不等于
~ 匹配正則表達式
!~ 不匹配正則表達式

用/etc/passwd文件做個例子

# 第1域匹配root
wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {FS=":"} $1~/root/' /etc/passwd
# 全部域匹配root
root:x:0:0:root:/root:/bin/bash
wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {FS=":"} $0~/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
# 全部域不匹配nologin
wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {FS=":"} $0!~/nologin/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
lightdm:x:108:114:Light Display Manager:/var/lib/lightdm:/bin

awk條件語句與C類似,有if語句,if/else語句以及if/else else語句三種。

下面是支持的布爾運算符

運算符 意義
|| 邏輯或
&& 邏輯與
! 邏輯非
# 多條件精確匹配
wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {FS=":"} {if($3==10||$4==10) print $0}' /etc/passwd
# 多條件模糊匹配
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
wsx@wsx-ubuntu:~/桌面$ awk 'BEGIN {FS=":"} {if($3~10||$4~10) print $0}' /etc/passwd
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
lightdm:x:108:114:Light Display Manager:/var/lib/lightdm:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
avahi-autoipd:x:110:119:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
wsx:x:1000:1000:wsx,,,:/home/wsx:/bin/bash
nx:x:123:1001::/var/NX/nx:/etc/NX/nxserver

表達式

一個awk表達式可以由數(shù)值、字符常量、變量、操作符、函數(shù)和正則表達式自由組合而成。

運算符 意義
+
-
*
/
%
^或** 乘方
++x 在返回x之前,x變量加1
x++ 在返回x之后,x變量加1
wsx@wsx-ubuntu:~/桌面$ awk '/^$/{print x+=1}' input
1
2
3
4
5

系統(tǒng)變量

awk定義了很多內(nèi)建變量用于設(shè)置環(huán)境信息,我們稱為系統(tǒng)變量。分為兩種:一種用于改變awk的默認值,例如域分隔符;第二種用于定義系統(tǒng)值,在處理文本時可以讀取這些系統(tǒng)值。

變量名 意義
$n 當前記錄的第n個域,域用FS分隔
$0 記錄的所有域
ARGC 命令行參數(shù)的數(shù)量
ARGIND 命令行中當前文件的位置(從0開始標號)
ARGV 命令行參數(shù)的數(shù)組
CONVFMT 數(shù)字轉(zhuǎn)換格式
ENVIRON 環(huán)境變量關(guān)聯(lián)數(shù)組
ERRNO 最后一個系統(tǒng)錯誤的描述
FIELDWIDTHS 字段寬度列表,以空格鍵分隔
FILENAME 當前文件名
FNR 瀏覽文件的記錄數(shù)
FS 字段分隔符,默認是空格鍵
IGNORECASE 布爾變量,如果為真,則進行忽略大小寫的匹配
NF 當前記錄中的域數(shù)量
NR 當前記錄數(shù)
OFMT 數(shù)字的輸出格式
OFS 輸出域分隔符,默認是空格鍵
ORS 輸出記錄分隔符,默認是換行符
RLENGTH 由match函數(shù)所匹配的字符串長度
RS 記錄分隔符,默認是空格鍵
RSTART 由match函數(shù)所匹配的字符串的第1個位置
SUBSEP 數(shù)組下標分隔符,默認值是\034

格式化輸出

awk借鑒C語言的語法,定義了printf輸出語句。基本語法如下:

? printf(格式控制符, 參數(shù))

格式控制符分為修飾符和格式符兩種,如下:

修飾符 意義
- 左對齊
width 域的步長
.prec 小數(shù)點右邊的位數(shù)
運算符 意義
%c ASCII字符
%d 整型數(shù)
%e 浮點數(shù),科學計數(shù)法
%f 浮點數(shù)
%o 八進制數(shù)
%s 字符串
%x 十六進制數(shù)

內(nèi)置字符串函數(shù)

awk提供了強大的內(nèi)置字符串函數(shù),用于實現(xiàn)文本的字符串替換、查找以及分隔等功能,下表列出:

函數(shù)名 意義
gsub(r,s) 在輸入文件中用s替換r
gsub(r,s,t) 在t中用s替換r
index(s,t) 返回s中字符串第一個t的位置
length(s) 返回s的長度
match(s,t) 測試s是否包含匹配t的字符串
split(r,s,t) 在t上將r分為序列s
sub(r,s,t) 將t中第1次出現(xiàn)的r替換為s
substr(r,s) 返回字符串r中從s開始的后綴部分
substr(r,s,t) 返回字符串r中從s開始長度為t的后綴部分

向awk腳本傳遞參數(shù)

awk腳本內(nèi)的變量可以在命令行中進行賦值,實現(xiàn)向awk腳本傳遞參數(shù),變量賦值放在腳本之后、輸入文件之前,格式為:

? awk腳本 parameter=value 輸入文件

條件語句和循環(huán)語句

看起來基本和C一樣,框架如下——

if (條件表達式)
    動作1
[else
    動作2]
while(條件表達式)
    動作
do
    動作
while(條件表達式)
for(設(shè)置計數(shù)器初值; 測試計數(shù)器; 計數(shù)器變化)
    動作

數(shù)組

數(shù)組是存儲一系列值的變量,可通過索引來訪問數(shù)組的值,索引需要用中括號括起,數(shù)組的基本格式為:

? array[index]=value

形式和C一樣,但awk數(shù)組無需定義數(shù)組類型和大小,可以直接賦值后使用。一般用在for循環(huán)中

for (variable in array)
    do somethng with array[variable]

更多操作可以查看:http://man.linuxde.net/awk

參考:Linux Shell編程——從初學到精通(第2版)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,228評論 2 33
  • sed與awk實例 文本間隔 在每一行后面增加一空行 將原來的所有空行刪除并在每一行后面增加一空行。這樣在輸出的文...
    stuha閱讀 1,920評論 0 21
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,124評論 0 0
  • 本文承接之前寫的三十分鐘學會AWK一文,在學習完AWK之后,趁熱打鐵又學習了一下SED,不得不說這兩個工具真的堪稱...
    mylxsw閱讀 4,417評論 3 74
  • sed工具簡介 用法:sed [-nefri] 動作參數(shù):-n:使用安靜模式(Silent)模式,一般在sed的...
    Bloo_m閱讀 1,020評論 0 1