linux的awk命令
1.什麼是AWK
(1)Aho、Weinberger、Kernighan三位發明者名字首字母;
(2)一個行文字處理工具;
2.AWK基本原理
2.1原理:
逐行處理檔案中的資料
2.2語法:
awk `pattern + {action}`
說明:
- (1)單引號“是為了和shell命令區分開;
- (2)大括號{}表示一個命令分組;
- (3)pattern是一個過濾器,表示命中pattern的行才進行action處理;
- (4)action是處理動作;
- (5)使用#作為註釋;
例子:顯示hello.txt中的第3行至第5行
cat hello.txt | awk `NR==3, NR==5{print;}`
2.3pattern說明
pattern引數可以是egrep正則中的一個,正則使用/pattern/
例子:顯示hello.txt中,正則匹配hello的行
cat hello.txt | awk `/hello/`
說明:
- (1)pattern和action可以只有其一,但不能兩者都沒有;
- (2)預設的action是print;
例子:顯示hello.txt中,長度大於100的行號
cat hello.txt | awk `length($0)>80{print NR}`
3.內建變數
FS 分隔符,預設是空格
NR 當前行數,從1開始
NF 當前記錄欄位個數
$0 當前記錄
$1~$n 當前記錄第n個欄位
例子:顯示hello.txt中的第3行至第5行的第一列與最後一列
cat hello.txt | awk `NR==3, NR==5{print $1,$NF}`
4.內建函式
gsub(r,s):在$0中用s代替r
index(s,t):返回s中t的第一個位置
length(s):s的長度
match(s,r):s是否匹配r
split(s,a,fs):在fs上將s分成序列a
substr(s,p):返回s從p開始的子串
5.操作符
5.1運算子
類似於c,支援+、-、*、/、%、++、–、+=、-=等諸多操作;
5.2判斷符
類似於c,支援==、!=、>、=>、~(匹配於)等諸多判斷操作;
6.控制流程
6.1.BEGIN和END
BEGIN和END本質是一個pattern。
BEGIN用於awk程式開始開始前,做一些初始化的工作;
END用於awk程式結束前,做一些收尾的工作。
例子:統計字元個數
awk `
BEGIN
{
count=0;
}
{
count+=length($0);
}
END
{
print count;
}`
6.2流程控制語句
- (1)if(condition){}else{}
- (2)while{}
- (3)do{}while(condition);
- (4)for(init;condition;step){}
- (5)break/continue:如果有END,會執行END中的收尾工作
流程控制語句用法幾乎與c相同。
7.awk與shell的互動
- (1)awk中使用shell中定義的變數:使用單引號即可;
#!/bin/bash
STR="hello"
echo | awk `{
print "`${STR}`";
}`
- (2)awk中使用shell命令:使用雙引號,或者system命令;
#!/bin/bash
echo hello | awk `{
print $0 | "cat"
}`
或者
#!/bin/bash
echo | awk `{
system("date > date.txt")
}`
- (3)awk中的變數傳出至shell:沒有什麼好方法,老老實實用檔案吧;
- (4)getline:awk裡,從檔案中讀取變數到awk中
#!/bin/bash
echo | awk `{
while(getline < "date.txt")
{
print $0;
}
}`
相關文章
- Linux:“awk”命令的妙用Linux
- Linux awk 命令詳解Linux
- linux awk 命令詳解Linux
- linux awk命令詳解Linux
- Linux awk 命令 說明Linux
- 技能篇:awk教程-linux命令Linux
- Linux中awk命令詳解Linux
- [轉]linux awk命令詳解Linux
- Linux系統中的管道命令、grep命令、sed命令和awk命令Linux
- 如何在Linux中使用awk命令Linux
- linux awk命令詳解 --轉載Linux
- awk命令
- linux系統awk命令使用詳解Linux
- 007 Linux 命令三劍客之-awkLinux
- 11. [轉載]linux中awk命令使用Linux
- Linux系統命令三劍客之 awkLinux
- Linux awk命令中如何刪除陣列Linux陣列
- awk命令詳解
- awk 命令專題
- awk命令複習
- 程式猿必知必會Linux命令之awkLinux
- Linux命令之grep/sed/awk等行轉列Linux
- Linux三劍客Awk、Sed、Grep 命令詳解Linux
- Linux 三劍客 Awk、Sed、Grep 命令詳解Linux
- 【案例】Linux三劍客中awk命令如何使用?Linux
- 5分鐘帶你瞭解Linux awk命令!Linux
- Linux (三劍客之三) awk命令詳解Linux
- Linux awkLinux
- unix的AWK命令介紹(轉)
- 使用awk批次殺程式的命令
- 寶付揭秘Linux支付命令操作之grep、sed、awkLinux
- awk命令使用例項
- awk命令部分用法
- 【Linux篇】--awk的使用Linux
- Linux中 awk命令根據列的索引批次提取列的資料Linux索引
- Linux-(awk)Linux
- linux之 awkLinux
- linux之awkLinux