天天看點

《Linux Shell腳本攻略》 筆記 第二章:常用指令

第二章:常用指令

1、cat

     cat -s //多個空白行壓縮成一個 
     cat *.txt | tr -s '\n'   //移除空白行
     cat -n //加行号           

2、find

沿着檔案層次結構向下周遊,比對符合條件的檔案,并執行相應的操作。

eg:

find ./ ! -name "*.txt" -print
[root@localhost program_test]# find ./  -type f -name "*.swp" -delete           

3、xargs 将标準輸入資料轉換成指令行參數。

[root@localhost program_test]# cat out.txt | xargs  //将單行轉化為多行

[root@localhost program_test]# cat out.txt | xargs -n 3 //将單行轉化為多行,每行的個數為3.

//統計.c和.cpp的檔案的代碼行數.  xargs -0 将'\0'作為定界符.
[root@localhost program_test]# find . -type f -name "*.c*" -print0 | xargs -0 wc -l
  10 ./main/cos_value.c
  10 ./main/sin_value.c
   5 ./main/haha.c
  15 ./main/main.c
   8 ./hello.cpp
   8 ./sin.c
  32 ./review2.cpp
  24 ./review5.cpp
   7 ./hello.c
119 total           

4.tr指令(translate的簡寫) 可對來自标準輸入的字元進行替換、删除及壓縮。

即:将一組字元變為另一組字元。

1)替換

echo “HELLO” | tr [A-Z] [a-z]           

2)删除

[root@localhost program_test]# echo "hello 123 world 456" | tr -d '0-9'
hello  world           

3)壓縮字元

[root@localhost program_test]# echo "GNU is     not UNIX" | tr -s ' '
GNU is not UNIX
//綜合舉例 
[root@localhost program_test]# cat sum.txt
1
2
3
4
5
[root@localhost program_test]# cat sum.txt | echo $[ $(tr '\n' '+') 0 ]
15           

5、md5校驗

[root@localhost program_test]# md5sum out.txt > out.txt.md5
[root@localhost program_test]# cat out.txt.md5
fd46d559bf0c90170fef3da3c3de4c67  out.txt           
//eg:
[root@localhost program_test]# find ./ 
-type f -name "*.txt" -print0 | xargs -0 md5sum >> curr_dir.md5
46e17910faf509df48dbfba9729ef018  ./banana.txt
c1dbbf63209a5580c052dc557510e7fb  ./11.txt
a80ddf02fa3a86c14066204e4bf2dbb9  ./multiline.txt
[root@localhost program_test]# md5sum -c curr_dir.md5
./banana.txt: OK
./11.txt: OK
./multiline.txt: OK           

6、sort排序

//sort 按第2列排序
[root@localhost program_test]# sort -k 2 sort.txt
4 bad 5000
3  linux 50
1   mac 2000
2  winxp 100
//sort 逆序排序
[root@localhost program_test]# sort -r sort.txt
4 bad 5000
3  linux 50
2  winxp 100
1   mac 2000           

//綜合舉例:統計字元串中每個字元出現的次數

[root@localhost program_test]# ./total_cnts.sh
AHEBHAAA
4A1B1E2H
[root@localhost program_test]# cat total_cnts.sh
INPUT="AHEBHAAA"
output=$(echo $INPUT | sed 's/[^.]/&\n/g' | sed '/^$/d' | sort | uniq -c | tr -d ' \n')
echo $INPUT
echo $output           

拆分如下:

[root@localhost program_test]# input="ahebhaaa"
[root@localhost program_test]# echo $input | sed 's/[^.]/&\n/g'
a
h
e
b
h
a
a
a

 sed '/^$/d'  //删除空行
uniq -c         //統計各行文本出現的次數.
tr -d '\n  '     //删除換行符以及空格字元           

7、臨時檔案命名

[root@localhost program_test]# temp_file="/tmp/var.$$"
[root@localhost program_test]# echo $temp_file
/tmp/var.16565           

作者:銘毅天下

轉載請标明出處,原文位址:

http://blog.csdn.net/laoyang360/article/details/42364751

繼續閱讀