1、找出檔案sample.txt中出現”Linux”的次數
#!/bin/bash#how many "Linux" in Linux.txt?grep -o "Linux" Linux.txt | wc -lgrep -c "Linux" Linux.txt
2、將/etc/passwd的第一列(使用者名稱)取出,以”the n account is $usr”顯示每一個使用者名稱。n表示行數,其中,/etc/passwd以”:”作為分隔字元
#!/bin/bash#find the first column of /etc/passwdawk -F: '{printf("the %d account is %s\n",NR,$1)'} /etc/passwd
{和}前面的'不能用\替換,否則會出錯。NR是awk內建的記錄數變數。
awk的百度百科:http://baike.baidu.com/view/209681.htm
3、隔行顯示檔案的內容
#!/bin/bash#print odd rowcat test.txt | awk '{if (NR%2==1) print $0}'
如果要隔行刪除這個檔案的內容,那麼可以把輸出重新導向,然後刪除原檔案
4、刪除目前的目錄下非指定日期的檔案
#!/bin/shls -1 |while read linedomonth=`echo $line|awk '{print $6}'`day=`echo $line|awk '{print $7}'time=echo $line|awk '{print $8}'file=`echo $linr|awk '{print $9}'if [ $month="RIGHTMONTH" -a $day="RIGHTDAY" -a $time="RIGHTTIME"thencontinueelserm $filrfidone
這個最好不要輕易嘗試,我試了下不小心就把所有指令檔都刪了,在資源回收筒中找不到,應該是進黑洞了,欲哭無淚..
5、掛載/卸載隨身碟到/mnt/usb
#fidsk -l#VM->snapshot->找到u盤#cat /proc/partitions 顯示檔案系統cd /mntmkdir usbsudo mount /dev/sdb1 ./usb #掛載cd usbls -lcd ..umount ./usb #卸載
6、
編寫程式,求1+2+3...n的和,要求n從命令列輸入
#!/bin/bashi=1sum=0while [ $i -le $1 ]dosum=$(($sum+$i))i=$((i+1))doneecho "the sum is $sum"
7、設計一個shell程式,輸入一個字串並判斷該字串是不是迴文串
#!/bin/bash#判斷輸入的字串是否為迴文串,複雜度O(N)echo "enter string"read strlen=`echo $str | wc -c`len=$(($len-1))l=$(($len/2))ctr=1flag=0while [ $ctr -le $l ]doa=`echo $str | cut -c $ctr`b=`echo $str | cut -c $len`if [ $a != $b ]then flag=1fictr=$(($ctr+1))len=$(($len-1))doneif [ $flag -eq 0 ]then echo "輸入的字串是迴文串"else echo "Are you kidding ? ds,這不是迴文串"fi
本文ZeroClock原創,但可以轉載,因為我們是兄弟。