一、awk幾個常見內建變數
FS 表示欄位分隔符
OFS 表示輸出資料的欄位分隔符
RS 表示記錄分隔符
ORS 表示輸出欄位的行分隔符
NF 表示欄位數
NR 表示記錄數
——-
1。1、區間選擇,比如我們在 1、2、3 之間,使用 awk ‘$0>2’ 指令列印大於2的資料3
echo “
1
2
3
” | awk ‘$0>2’
1。2、記錄數:NR,輸入指令去掉列印第一行的資料
awk ‘NR>1’ /tmp/first。txt
1。3、輸出顯示的from hello mryt_qa被空格分隔成三個欄位且first。txt檔案中的三條資料欄位數都是3
awk ‘{print NR,NF}’ /tmp/first。txt
1。4、awk ‘BEGIN{FS=“h”}{print NR,NF,$1,$2}’ /tmp/first。txt
1。5、awk ‘OFS=’‘-’‘{print $1,$2,$3}’ /tmp/first。txt
1。6、awk ‘BEGIN{print 100/3}’
——-
二、sed[addr]X[opptions],其中 [] 定義了一個範圍,x位是具體操作,options表示進行資料修改的選項,常用的幾個:
-e 表示可以指定表示式
sed -n ‘2p’ 2 表示列印第二行的資料
s 表示查詢並替換
-i 表示直接修改原始檔
-E 支援擴充套件表示式
2。1、sed指令將qa123替換成mryt_qa
sed ‘s#qa123#mryt_qa#’ /tmp/first。txt
2。2、把以q開頭的三個字元都替換成xx,後面的23 沒有改變,是因為需要新增一個額外的標記符 /g
sed ‘s/q。。/xx/g’ /tmp/first。txt
三、問awk和sed最大的區別是什麼?
awk用於資料的提取,sed更專注用於資料的修改,sed 的重要作用是完成對資料的增刪改查工作:
d 是刪除
p 是列印
s 是查詢並進行替換
\1 \2 可以根據匹配的資料進行分組處理