awk指令
作者: cross 日期: 2007-05-25 23:32
在 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
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
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
line2 2 2
line3 3 3
以前研究到的 http://ssorc.tw/rewrite.php/read-198.htmlline1 1 1 add
line2 2 2 wow
line3 3 3 wow
#!/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 )
}
}
發表評論
上一篇
返回
下一篇
標籤:




sysctl指令 (2011-10-26 15:16)
rarlinux 指令--壓縮分割加密檔案 (2011-03-15 20:00)
Perl 程式備忘錄 (續) 正規化 (2008-09-18 11:09)
Perl 程式備忘錄 (續) II (2008-09-18 10:37)
將 shell script 包成 binary 二進位 執行檔 (2008-09-09 10:37)
使用 net user 修改使用者的資訊 (2008-08-18 10:51)
使用awk或sed取雙引號中的值 (2008-07-31 14:55)
使用 basename 指令取最後的字串 (2008-07-25 11:54)
eval指令(續) 使 shell 掃瞄命令二次 (2008-06-13 22:35)