awk 字段處理

2022-09-13 00:57:15 字數 1296 閱讀 1315

基本用法:

$ awk '條件動作1 條件動作2 ...' filename
概述:

**1. awk為行處理字段,預設字段分割為空格 或 [tab] **

**2. 表示動作(command),條件型別置於 外,最後用單引號 ' ' 括住 **

**3. 當條件型別為if語句時,要置入動作內 **

**4. awk所有動作中,中,若有多個輔助命令,可用;或enter隔開 **

**5. awk可接受前個 command 的 standardoutput **

i.變數

變數名稱

代表意義

nf每一行擁有的字段總數

nr目前awk處理是第幾行

fs目前的分割字元,預設是空格

$0一整行資料

$1第乙個字段(第一列)

$2第二個字段(第二列)

$ last -n 5 | awk ''

# awk中變數需要大寫,非變數部分需要用雙引號

ii.條件型別

** 邏輯運算子(<;>;<=;>=;==;!=)**

$ cat /etc/passwd | awk ' $3 < 10 '

$ cat /etc/passwd | awk 'begin $3 < 10 '

# 關鍵字begin預先設定awk變數,否則在第二行才能生效

# 此處可看作兩個條件型別及兩個動作

iii.高階操作(條件及迴圈計算)

pay.txt檔案內容

name

1st2st

vbrid

230330

dmwr

450679

test

230112

計算每行的加總並顯示

$ cat pay.txt | \

awk 'nr==1

nr>=2'

$ cat pay.txt | \

awk '

nr>=2'

# 兩句內容一樣;條件型別可用if語句寫入到'{}'動作中

# printf 用法詳見prinf說明

# %s;%i;%f分別表示字串,整數,浮點數,其中浮點數的.佔一位數

awk所有動作中,中,若有多個輔助命令,可用;或enter隔開

迴圈計算待更新

本文為《鳥哥的linux私房菜基礎篇第三版》第12章部分學習筆記

awk擷取字段

file 期望每行刪除第二個 之前的內容,得到 isbctruncate 1 socialtime 1 nettype mobile isbctruncate 1 socialtime 1 nettype pc 我的處理方法是 awk f file 從第三個字元開始處理,並且以 為分隔符,因為最後乙...

awk多檔案處理

a.txt內容如下 a 150 b 200 c 100 b.txt內容如下 abcd a 12.5 bbbb b 35 cccc c 42 dddd d 21 想要通過a.txt b.txt得到ba.txt abcd a 12.5 150 bbbb b 35 200 cccc c 42 100 dd...

使用awk處理文字

在liux下我們經常需要對一些文字文件做一些處理,尤其像從日誌裡提取一些資料,這是我們一般會用awk工具和sed工具去實現需求,這裡對awk的入門使用簡單記錄。awk可以看作一種文字處理工具,一種專注資料操作的程式語言,乙個資料處理引擎。其名字 於三個發明者的姓名首字母。一般在liux下使用的awk...