Linux課的幾個Shell編程學習札記。
1、找出文件sample.txt中出現”Linux”的次數
#!/bin/bash
#how many "Linux" in Linux.txt?
grep -o "Linux" Linux.txt | wc -l
2、將/etc/passwd的第一列(用戶名)取出,以”the n account is $usr”顯示每一個用戶名。n表示行數,其中,/etc/passwd以”:”作為分隔符
#!/bin/bash
#find the first column of /etc/passwd
awk -F: '{printf("the %d account is %s\n",NR,$1)'} /etc/passwd
{和}前面的'不能用\替換,否則會出錯。NR是awk自帶的記錄數變量。
awk的相關知識 http://www.linuxidc.com/search.aspx?where=nkey&keyword=5129
3、隔行顯示文件的內容
#!/bin/bash
#print odd row
cat test.txt | awk '{if (NR%2==1) print $0}'
如果要隔行刪除這個文件的內容,那麼可以把輸出重定向,然後刪除原文件
4、刪除當前目錄下非指定日期的文件
#!/bin/sh
ls -1 |while read line
do
month=`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"
then
continue
else
rm $filr
fi
done
這個最好不要輕易嘗試,我試了下不小心就把所有腳本文件都刪了,在回收站中找不到,應該是進黑洞了,欲哭無淚..
5、掛載/卸載U盤到/mnt/usb
#fidsk -l
#VM->snapshot->找到u盤
#cat /proc/partitions 顯示文件系統
cd /mnt
mkdir usb
sudo mount /dev/sdb1 ./usb #掛載
cd usb
ls -l
cd ..
umount ./usb #卸載