awk命令擴充套件

2021-08-17 03:23:14 字數 2403 閱讀 4559

awk 中使用外部shell變數

測試檔案awk.txt

及格:張三:67            

不及格:李四:58

及格:小明:72

優秀:小虎:95

不及格:小蘭:49

編寫指令碼awk1.sh:

#!/bin/bash

sort -n awk.txt|awk -f ":"

''|uniq >考試.txt

sort awk.txt|awk -f ":"

''|uniq -c >123.txt

for a in `cat 考試.txt`;do

echo

"[$a

]":`awk -v c=$a

'$2==c ' 123.txt`人

awk -v b=$a -f ":"

' $1==b ' awk.txt

done

[root@localhost test]# sh

awk1

.sh[不及格]

:2人李四:58

小蘭:49

[及格]

:2人張三:67

小明:72

[優秀]

:1人小虎:95

awk 合併乙個檔案  我有這樣的需求,需要把兩個檔案中,第一列相同的行合併到同一行中。舉個例子,有兩個檔案,內容如下

[root@localhost awk]

#cat 1.txt

1 aa

2 bb

3 ee

4 ss

[root@localhost awk]

#cat 2.txt

1 ab

2 cd

3 ad

4 bd

5 de

[root@localhost awk]# awk 'nr==fnrnr>fnr'  1.txt  2.txt

1 ab aa

2 cd bb

3 ad ee

4 bd ss

5 de

把乙個檔案多行連線成一行  例子:

[root@localhost awk]

#cat 2.txt

1 ab

2 cd

3 ad

4 bd

5 de

print和printf的區別

[root@localhost awk]# awk '' 2.txt12

345[root@localhost awk]# awk '' 2.txt

12345[root@localhost awk]# ^c

echo "" 的作用是換行

[root@localhost awk]# awk ''

2.txt; echo""

12345

[root@localhost awk]# awk '' 2.txt;echo 

""1+2+3+4+5+

我們可以用sed來實現這個需求

[root@localhost awk]# cat 2.txt|awk ''|xargs|sed -r 's/ /+/'g

1+2+3+4+5

awk中gsub函式的使用 

gsub和sed中替換功能差不多

使用gsub

[root@localhost awk]# cat 1.txt

1 aa

2 bb

3 ee

4 ss

[root@localhost awk]# awk 'gsub(/[0-9]/,"abc")' 1.txt

abc aa

abc bb

abc ee

abc ss

使用sed替換

[root@localhost awk]# sed 's/[0-9]/abc/g' 1.txt

abc aa

abc bb

abc ee

abc ss

awk 'gsub(/[0-9]/,"abc",$1) ' 1.txt // 替換$1中的數字為abc

[root@localhost awk]# awk  'gsub(/[0

-9]/,"abc",$1) ' 1.txt

abc aa

abc bb

abc ee

abc ss

awk擴充套件

1 使用shell變數 cat filename 1111111 13443253456 2222222 13211222122 1111111 13643543544 3333333 12341243123 2222222 12123123123 使用awk設定為 1111111 13443253...

awk鞏固擴充套件

選項 v可以實現使用外部變數。如 a 44echo abcd awk v get a a 說明 v選項用於定義引數,這裡表示將變數a的值賦予get a。如果有多個變數需要賦值,就需要多個 v選項。需求 把兩個檔案中,第一列相同的行合併到同一行中。舉個例子,有兩個檔案,內容如下 cat 1.txt 1...

awk命令詳解

本文編輯整理自 一 前言 awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指gawk。awk語言的最基本功能是在檔案或字串中基於指定規則來分解抽取資訊,也可以基於指定的規則來輸出資料。完整的awk指令碼通常用來格式化文字檔案中的資訊。二 基本語法 awk opion awk sc...