shell指令碼:awk和sed
awk 和sed
cut [選項] 檔名 預設分隔符是製表符
選項:
-f 列號: 提取第幾列
-d 分隔符: 按照指定分隔符分割
cut的侷限性 不能分割空格
awk
一個強大的文字分析工具
把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分在進行各種處理
語法:awk '條件1{動作1}.....' 檔名
eg:
df -h | awk '{print $1 $2}'
cat /etc/passwd | awk 'BEGIN{FS=":"}{print $1"\t"$2"\t"$3}' --> BEGIN命令,一開始就執行
ifconfig eth1 | grep "inet addr:" 獲取檔案中 含有inet addr:這一行
ifconfig eth1 | grep "inet addr:" | awk -F: '{print $2}' |awk '{print $1}' 獲取ip地址
sed
是一個非互動性檔案流編輯器,它編輯檔案或標準輸入匯出的檔案拷貝
注:並不與初始檔案打交道,它操作的只是一個拷貝,然後所有的改動如果沒有重定向到一個檔案,將輸出到螢幕
語法:sed [選項] '[動作]' 檔名
選項:
-n 使用安靜(slient)模式,顯示經過sed特殊處理的資料
-e 允許多點編輯
-i 直接修改讀取的檔案內容,而不是由螢幕輸出 --> 改原始檔
命令:
a\ 新增,a的後面可以接字串,在下一行出現
sed ’2a hive' cut.log
c\ 替換
d 刪除
i\ 插入
p 列印
s 查詢並替換 eg:2s/old/new /g
定時器
crontab命令允許使用者提交、編輯、或刪除相應的作業。每一個使用者都可以有一個crontab檔案來儲存排程資訊。可以使用它執行任意一個shell指令碼或某個命令
crontab的命令格式
crontab -e
使用編輯器編輯當前的crontab檔案
crontab檔案格式
minute hour day-of-month month-of-year day-of-week commands
[0-59] [0-23] [1-31] [1-12] [0-6] 0表示周天 執行的命令
書寫注意事項
全部不能為空,必須填入,不知道的用萬用字元*表示任何時間
每個時間段可以指定多個值,不連續得值用(,)間隔,連續的用(-)間隔
命令應該給出絕對路徑
使用者必須具有執行所對應的命令或程式的許可權
*/2 每隔兩分鐘(..)執行
history命令
功能:幫助使用者回憶執行過的命令
-c 清楚所有的歷史命令
-w 把快取中的歷史命令寫入歷史命令儲存檔案~/.bash_history
!命令號 執行這條命令的歷史命令
!字串 執行以該字串開頭的最近的一條歷史命令
ctrl+R
對歷史命令的搜尋
輸入重定向
<
輸出重定向
> >>
bash t2.sh > a.log 2> b.log 正確的日誌輸入到a,錯誤的輸入到b
bash t2.sh > /dev/null 2> b.log 正確的日誌不輸入