awk指令

在 passwd檔裡依冒號為區隔找到第三個是小於數字10的帳號,並只列出第一個與第三個值
cat /etc/passwd |awk 'BEGIN {FS=":"} $3 <= 10 {print $1 " " $3}'

列出包含 root 的且第二個欄位
awk 'BEGIN {FS=":"} {}/root/ {print $1 " " $3}' /etc/passwd

要以什麼來分隔也可以這麼作
awk -F":" '{ print $1 }' /etc/passwd

NF 每一行 ($0) 擁有的欄位總數
NR 目前 awk 所處理的是『第幾行』資料
FS 目前的分隔字元,預設是空白鍵
OFS 輸出分隔字元

搭配 printf
cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {printf "%10s %10s ",$1,$3}'
結果與
printf "%10s %10s " `cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 " " $3}'`
相同

第一行與第二行以後的以不同的排列顯示
more ttt.txt
line1   1       1
line2   2       2
line3   3       3
cat ttt.txt | awk 'NR==1{printf "%10s %10s %10s %10s ",$1,$2,$3,"add"} NR>=2 {printf "%5s %5s %5s %5s ",$1,$2,$3,"wow"}'

     line1          1          1        add
line2     2     2   wow
line3     3     3   wow
以前研究到的 http://ssorc.tw/rewrite.php/read-198.html

#!/bin/awk
 
BEGIN {
 
FS=":"
 
uidmin=10000
uidmax=20000
 
}
 
{
       if ( $3 >= uidmin && $3 <= uidmax ) {
                 print " make directory " $6 " chown " $3 "." $4 " " $6
                 system( "mkdir -p " $6 ";chown " $3 "." $4 " " $6 )
       }
}

標籤: 指令
評論: 0 | 引用: 0 | 閱讀: 3627 | 列印 | 文件 | 轉發

發表評論
暱 稱: 密 碼:
網 址: E - mail:
驗證碼: 驗證碼圖片 選 項:
頭 像:
內 容:
  • 粗體
  • 斜體
  • 底線
  • 插入圖片
  • 超連結
  • 電子郵件
  • 插入引用
  • 表情符號