awk編程

cut 命令html

-f : 指定第幾列
-d : 指定分割符mysql

例子: cut -d ":" -f 1,3 /etc/passwdsql

應用:磁盤報警apache


printf 命令tcp

printf '%s %s %s\n' 1 2 3 4 5 6
printf '%s' $(cat /etc/passwd)htm

注意: $(cat /etc/passwd)blog


awk 命令排序

awk '條件1{動做1}條件2{條件2}...' 文件名字符串

例子
awk '{printf $2 "\t" $6"\n"}' student.txtget

磁盤報警 df -h | awk '{print $1 "\t" $5 "\t"}'
df -h | grep sda5 | awk '{print $5}' | cut -d "%" -f 1

BEGIN 在執行以前要執行的
awk 'BEGIN{print "test !!"} {print $2 "\t"}'

END 在執行完後執行的

關係運算
awk '$6 >= 80 {printf $2 "\n"}'


sed 命令

sed [選項] '[動做]' 文件名

選項
-n:只輸出sed操做的第n行
-e:容許多個條件執行
-i:修改原文件

動做
a:添加行 sed '2a hello' test.txt 在第二行後追加hello
c:替換行 sed '2c hello' test.txt
i:插入行 sed '2i hello' test.txt 在第二行前加入hello
d:刪除行 sed '2,4d' test.txt 刪除2到4行數據
p:輸出行 sed -n '2p' test.txt
s:替換字符串 sed '行s/舊字串/新字串/g'


排序
sort [選項] 文件名

-f:忽略大小寫
-n:以數值排序
-r:取反
-t:指定分隔符
-k n[,m]:


統計命令
wc [選項] 文件名

-l 統計行數
-w 統計單詞數
-m 統計字符數


條件判斷

echo $? //查看上一條命令是否正確 0:成功 非0:失敗

兩個文件比較
文件1 -nt 文件2 文件1比文件2新
文件1 -ot 文件2 文件2比文件2舊
文件1 -ef 文件2 兩個文件是否爲同一個文件,判斷硬鏈接

邏輯
-a 邏輯與
-o 邏輯或
! 邏輯非


-if 語句

if [ 判斷 ];then
程序
fi

例子:

rate=$(df -h | grep /dev/ada5 | awk '{print $8}' | cut -d "%" -f1)
if [ $rate -ge 89 ];then
echo "/dev/ada5 is full"
if

備份數據腳本

date=$(date +%y%m%d)
size=$(du -sh /usr/local/mysql)

if [ -d /usr/local/mysql ]
then
echo 'Date is : $date' > /tmp/dbback/db.txt
echo 'Size is : $size' >> /tmp/dbback/db.txt
cd /tmp/dbback
tar -zcf mysql_$date.tar.gz /usr/local/mysql db.txt &>/dev/null
rm -rf /tmp/dbback/db.txt
else
mkdir /tmp/dbback
echo 'Date is : $date' > /tmp/dbback/db.txt
echo 'Size is : $size' >> /tmp/dbback/db.txt
cd /tmp/dbback
tar -zcf mysql_$date.tar.gz /usr/local/mysql db.txt &>/dev/null
rm -rf /tmp/dbback/db.txt
if

nmap 命令

判斷apache是否啓動

port=$(nmap -sT 127.0.0.1 | grep tcp | grep http | awk '{print $2}')
if [ "$port" == "open" ]
then
echo "$(date) httpd is ok";
eles
/etc/rc.d/init.d/httpd-start &>/dev/null
fi


for 循環

for i in 1 2 3 4
do
echo $i
done

批量解壓縮

ls *.tar.gz > ls.log
for i in $(cat ls.log)
do
tar -zxf $i &>/dev/null
done
rm -rf ls.log

for((i=1;i<=100;i=i+1))
do
s=$(($s+$i))
done
echo "$s"


while 語句

while [ 條件判斷 ]
do
程序
done

until 語句

until [ 條件判斷 ]
do
程序
done

http://www.cnblogs.com/mchina/archive/2012/06/30/2571317.html

相關文章
相關標籤/搜索