1. 程式人生 > >awk用法練習

awk用法練習

行合並 ffffff 等價 說明 abcd 技術 c99 sort ima

如:
A=44echo "ABCD" | awk -v GET_A=$A ’{print GET_A}’
說明:-v選項用於定義參數,這裏表示將變量A的值賦予GET_A。
有多少個變量需要賦值,就需要多少個-v選項。與之等價的:應用於腳本中:
#! /bin/bash
sort -n filename |awk -F ‘:‘ ‘{print $1}‘|uniq >id.txt
for id in cat id.txt; do
echo "[$id]"
awk -v id2=$id -F ‘:‘ ‘$1==id2 {print $2}‘ filename // 另外的方式為: awk -F ‘:‘ ‘$1=="‘id‘" {print $2}‘ filename
done
技術分享圖片
技術分享圖片
awk 合並一個文件
awk ‘NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}‘ 1.txt 2.txt
解釋:NR表示讀取的行數,FNR表示讀取的當前行數
所以其實NR==FNR 就表示讀取2.txt的時候。 同理NR>FNR表示讀取1.txt的時候
數組a其實就相當於一個map
技術分享圖片
把一個文件多行連接成一行
技術分享圖片
awk ‘gsub(/nologin/,"abc")‘ /etc/passwd // passwd文件中把所nologin替換為abc
技術分享圖片
awk -F ‘:‘ ‘gsub(/root/,"abc",$1) {print $0}‘ /etc/passwd // 替換$1中的root為abc
技術分享圖片
grep 或 egrep 或awk 過濾兩個或多個關鍵詞
技術分享圖片
egrep ‘123|abc‘ filename //用egrep同樣可以實現
技術分享圖片
awk ‘/123|abc/‘ filename // awk 的實現方式
技術分享圖片
把兩個文件中相同的行合並成一行
技術分享圖片

awk用法練習