在 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/?p=198
#!/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 )
}
}
留言