1.awk數組
awk用於資料處理很方便。awk的數組,是一種關聯陣列(Associative Arrays),下標可以是數字和字串。因無需對數組名和元素提前聲明,也無需指定元素個數 。數組元素用0或空串來初始化,這根據上下文而定。
<1>建立數組 array[index] = value :數組名array,下標index以及相應的值value。 複製代碼 <2>讀取數組值 { for (item in array) print array[item]} # 輸出的順序是隨機的
{for(i=1;i<=len;i++) print array[i]} # Len 是數組的長度 複製代碼 awk數組example:
計算總數(sum)(這次做作業用到) awk '{name[$0]+=$1};END{for(i in name) print i, name[i]}' #注意空格
再舉個例子:
echo "aaa 1
aaa 1
ccc 1
aaa 1
bbb 1
ccc 1" |awk '{a[$1]+=$2}END{for(i in a) print i,a[i]}'
aaa 3
bbb 1
ccc 2 複製代碼
另外,見學校linux版文章:http://bbs.byr.cn/#!article/Linux/119000
2. rm命令的管道操作問題(ll|grep "ab "|rm 問題的解決)
由於這裡僅把ls的輸出重新導向,我們可以看作是把一個臨時檔案(其實並不是的)給了grep做參數,這個檔案的內容是:2.log, 3.log。然後在把這個也看做是一個臨時檔案,傳遞給rm。也就是說用rm刪除一個重新導向,rm就執行不了了,因為rm不能拿重新導向做參數
rm `ls|grep ab`才是正確的做法。
(另外,注意這裡的引號``是ESC鍵下的符號。)
3、linux統計檔案夾中檔案數目
第一種方法:
ls -l|grep “^-”|wc -l
ls -l
長列表輸出該目錄下檔案資訊(注意這裡的檔案,不同於一般的檔案,可能是目錄、連結、裝置檔案等)。如果ls -lR|grep “^-”|wc-l則可以連子目錄下的檔案一起統計。 grep ^- 這裡將長列表輸出資訊過濾一部分,只保留一般檔案,如果只保留目錄就是 ^d
wc -l 統計輸出資訊的行數,因為已經過濾得只剩一般檔案了,所以統計結果就是一般檔案資訊的行數,又由於一行資訊對應一個檔案,所以也就是檔案的個數。
第二種方法:
find ./ -type f|wc -l(比如我這次用的就是:find ./ -name "*".log -empty,-->man find 就知道是怎麼回事了 )
由於預設find會去子目錄尋找,如果只想尋找目前的目錄的檔案用find ./ -maxdepth 1 -type f|wc -l即可。
需要說明的是第二種方法會比第一種方法快很多,尤其是也統計子目錄時。
4.crontab(源於古希臘的詞"chronos",, “時間”的意思.)
用法見下圖:
* * * * *
分時 日 月 天
example:
0 2 1 * * root rm -f /tmp/* #每月1號淩晨2點,清理/tmp下的檔案
0 8 6 5 * root mail robin < /home/galeki/happy.txt #每年5月6日8點am給robin發信祝他生日快樂 假如,我想每隔2分鐘就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 “ / ” 和 “ , ” 來設定: */2 * * * * root ............... #每兩分鐘就執行........ 0 6,12,18 * * * root ............... #每天6點、12點、18點執行........