常見Shell命令用法總結
來自: http://www.cnblogs.com/linuxer/p/3260329.html
常見命令用法總結
----- 目錄: ---
- 關于grep的總結
- 關于egrep的總結
- 關于tr的總結
- 關于sort的總結
- 關于uniq的總結
- 關于cut的總結
- 關于tee的總結
- 關于split的總結
- 關于type的使用
- 關于find的使用
- 關于xargs的使用
</ol>
</h2>
關于grep的總結
找出所需字符串的時候可用引號也可以不用引號。
grep bc test
grep "bc" test
grep 'bc' test
注:以上3中形式都能找出test文件中相對應含有字符串bc的行并打印出來。
比較常用的參數有;
-i, --ignore-case 忽略大小寫
-n, --line-number print line number with output lines
-v, --invert-match select non-matching lines 顯示不匹配的行
-h, --no-filename suppress the prefixing filename on output查詢多文件時不顯示文件名
-l, --files-with-matches print only names of FILEs containing matches查詢多文件時只顯示文件名
grep select * , 列出當前目錄下所有包含select 字樣的文件名及含有select字樣的行。
grep -h select * , 和上一條相似,但不顯示文件名稱。
grep -l select * , 和第一條相似,但只顯示文件名。
2、關于egrep的總結
egrep 是擴充功能的grep
egrep ‘2|5’ 1.txt ,列出含有2或者5的行
egrep '12(@|3)' test 列出含有12且后面緊跟@或3的行
3、關于tr的總結
從標準輸入中替換、縮減和/或刪除字符,并將結果寫到標準輸出。
-s, --squeeze-repeats 如果匹配于SET1 的字符在輸入序列中存在連續的重復,在替換時會被統一縮為一個字符的長度
tr test '12' '45' 將文件中的12替換為45
cat test |tr '[a-z]' '[A-Z]' 將文件中的小寫全部替換為大寫
tr ' ' '\n' <test 把test文件中的所有空格替換為換行
tr -s ' ' ' ' <test 把test文件中每行中連續出現的空格替換為一個空格
4、關于sort的總結
sort [選項]... --files0-from=F
串聯排序所有指定文件并將結果寫到標準輸出。
-c, --check, --check=diagnose-first 檢查輸入是否已排序,若已有序則不進行操作
-r, --reverse 逆序輸出排序結果
-n, --numeric-sort 根據字符串數值比較
-k, --key=位置1[,位置2] 在位置1 開始一個key,在位置2 終止(默認為行尾)
-u, --unique 配合-c,嚴格校驗排序;不配合-c,則只輸出一次排序結果
5、關于uniq的總結
uniq對重復的行只保留一行。 【注意】對于處理字符長的時候一般先sort然后再uniq。
-c, --count 在每行前加上表示相應行目出現次數的前綴編號
-d, --repeated 只輸出重復的行
6、關于cut的總結
cut 主要的用途在于將一行里面的數據進行分解,最常使用在分析一些數據或文字數據的時候!
這是因為有時候我們會以某些字符當作分割的參數,然后來將數據加以切割,以取得我們所需要的
數據。
cut -d" " -f1 test 以空格為分割符,并輸出第一列
last | cut -c1-20 //將 last 之后的數據,每一行的 1-20 個字符取出來
7、關于tee的總結
將數據輸出重定向到文件的時候,屏幕上就不會出現任何的數據!那么如果我們需要將數據同時
顯示在屏幕上跟檔案中呢?這個時候就需要 tee 這個指令。
last |tail |tee last.list | cut -d " " -f1 將last的最后10行寫進last。last文件并接著處理并輸出在屏幕。
8、關于split的總結
將大的文件分割成小的文件。
-l, --lines=數值 指定每個輸出文件有多少行
-C, --line-bytes=大小 指定每個輸出文件里最大行字節大小
9、關于type的使用
type打印一個命令的絕對路徑
[guo@guo ~]$ type vim
vim is hashed (/usr/bin/vim)
[guo@guo ~]$ type perl
perl is /usr/bin/perl
10、關于find的使用
find /home/guo/ -name test找出文件夾guo中的test文件
find / -name “*apple* -print
find /home –name “[!abc]”
find /home –name “?[1-9]”
find / -type d(f b c l p)
find / -mtime -5 查找最后修改小于5天的文件
-mtime 文件修改時間//vi、echo修改文件會改變此文件時間
-atime 文件訪問時間//用cat、vi查看會改變此文件時間
-ctime 文件改變時間// vi 、echo修改文件、chmod、chown會改變此文件時間
stat fileanme 查看以上3個時間
11、關于xargs的使用
xargs從標準輸入中接受單詞列表的命令,并把這些單詞作為參數傳遞給指定的命令
ls |xargs rm//把ls列出的內容再通過rm刪除
可以每次刪除一部分文件
ls |xargs –n 2 rm
ls | xargs –n 2 echo “==>”
有時目錄里文件太多了不能使用rm *刪除這時
ls | grep ‘^abc’ |xargs –n 20 rm
12、關于bc的使用
bc命令:進行算術運算,但不限于整數運算
scale=4 //表示計算結果保留4位小數
bc還可以用在shell變量賦值中
ABC=`echo “scale=4;8/3” | bc`
echo $ABC
腳本編程
1.1.1.1 www.baidu.com
2.2.2.2 www.baidu.com
3.3.3.3. www.sina.com.cn
2.2.2.2 www.chinauxin.net
2.2.2.2 www.51cto.com
1.1.1.1 www.linuxtone.org
輸出
2.2.2.2 www.baidu.com,www.chinauxin.net,www.51cto.com
1.1.1.1 www.baidu.com,www.linuxtone.org
3.3.3.3. www.sina.com.cn
awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' file
創建html文件 ::cat 運維必備.html |sed -e '/^$/d'|sed -n '2,$ s/^/\<br\>/p' |sed 's/$/\<\/br\>/' >a.html
內核、Shell、文件系統這三個部分構成了linux系統
合并兩個文件
paste 1 2|awk '{if($1 ~$2) print $1 ;else print $0}'
a=date +"%Y-%m-%d %H : %M : %S" -d "5 min ago"
</ol>
關于grep的總結
找出所需字符串的時候可用引號也可以不用引號。
grep bc test grep "bc" test grep 'bc' test
注:以上3中形式都能找出test文件中相對應含有字符串bc的行并打印出來。
比較常用的參數有;
-i, --ignore-case 忽略大小寫 -n, --line-number print line number with output lines -v, --invert-match select non-matching lines 顯示不匹配的行 -h, --no-filename suppress the prefixing filename on output查詢多文件時不顯示文件名 -l, --files-with-matches print only names of FILEs containing matches查詢多文件時只顯示文件名 grep select * , 列出當前目錄下所有包含select 字樣的文件名及含有select字樣的行。 grep -h select * , 和上一條相似,但不顯示文件名稱。 grep -l select * , 和第一條相似,但只顯示文件名。
2、關于egrep的總結
egrep 是擴充功能的grep egrep ‘2|5’ 1.txt ,列出含有2或者5的行 egrep '12(@|3)' test 列出含有12且后面緊跟@或3的行
3、關于tr的總結
從標準輸入中替換、縮減和/或刪除字符,并將結果寫到標準輸出。
-s, --squeeze-repeats 如果匹配于SET1 的字符在輸入序列中存在連續的重復,在替換時會被統一縮為一個字符的長度 tr test '12' '45' 將文件中的12替換為45 cat test |tr '[a-z]' '[A-Z]' 將文件中的小寫全部替換為大寫 tr ' ' '\n' <test 把test文件中的所有空格替換為換行 tr -s ' ' ' ' <test 把test文件中每行中連續出現的空格替換為一個空格
4、關于sort的總結
sort [選項]... --files0-from=F
串聯排序所有指定文件并將結果寫到標準輸出。
-c, --check, --check=diagnose-first 檢查輸入是否已排序,若已有序則不進行操作 -r, --reverse 逆序輸出排序結果 -n, --numeric-sort 根據字符串數值比較 -k, --key=位置1[,位置2] 在位置1 開始一個key,在位置2 終止(默認為行尾) -u, --unique 配合-c,嚴格校驗排序;不配合-c,則只輸出一次排序結果
uniq對重復的行只保留一行。 【注意】對于處理字符長的時候一般先sort然后再uniq。
-c, --count 在每行前加上表示相應行目出現次數的前綴編號 -d, --repeated 只輸出重復的行
6、關于cut的總結
cut 主要的用途在于將一行里面的數據進行分解,最常使用在分析一些數據或文字數據的時候!
這是因為有時候我們會以某些字符當作分割的參數,然后來將數據加以切割,以取得我們所需要的
數據。
cut -d" " -f1 test 以空格為分割符,并輸出第一列 last | cut -c1-20 //將 last 之后的數據,每一行的 1-20 個字符取出來
7、關于tee的總結
將數據輸出重定向到文件的時候,屏幕上就不會出現任何的數據!那么如果我們需要將數據同時
顯示在屏幕上跟檔案中呢?這個時候就需要 tee 這個指令。
last |tail |tee last.list | cut -d " " -f1 將last的最后10行寫進last。last文件并接著處理并輸出在屏幕。
8、關于split的總結
將大的文件分割成小的文件。
-l, --lines=數值 指定每個輸出文件有多少行 -C, --line-bytes=大小 指定每個輸出文件里最大行字節大小
9、關于type的使用
type打印一個命令的絕對路徑
[guo@guo ~]$ type vim vim is hashed (/usr/bin/vim) [guo@guo ~]$ type perl perl is /usr/bin/perl
10、關于find的使用
find /home/guo/ -name test找出文件夾guo中的test文件 find / -name “*apple* -print find /home –name “[!abc]” find /home –name “?[1-9]” find / -type d(f b c l p) find / -mtime -5 查找最后修改小于5天的文件 -mtime 文件修改時間//vi、echo修改文件會改變此文件時間 -atime 文件訪問時間//用cat、vi查看會改變此文件時間 -ctime 文件改變時間// vi 、echo修改文件、chmod、chown會改變此文件時間 stat fileanme 查看以上3個時間
11、關于xargs的使用
xargs從標準輸入中接受單詞列表的命令,并把這些單詞作為參數傳遞給指定的命令
ls |xargs rm//把ls列出的內容再通過rm刪除 可以每次刪除一部分文件 ls |xargs –n 2 rm ls | xargs –n 2 echo “==>” 有時目錄里文件太多了不能使用rm *刪除這時 ls | grep ‘^abc’ |xargs –n 20 rm
12、關于bc的使用
bc命令:進行算術運算,但不限于整數運算 scale=4 //表示計算結果保留4位小數 bc還可以用在shell變量賦值中 ABC=`echo “scale=4;8/3” | bc` echo $ABC
腳本編程
1.1.1.1 www.baidu.com
2.2.2.2 www.baidu.com
3.3.3.3. www.sina.com.cn
2.2.2.2 www.chinauxin.net
2.2.2.2 www.51cto.com
1.1.1.1 www.linuxtone.org
輸出
2.2.2.2 www.baidu.com,www.chinauxin.net,www.51cto.com
1.1.1.1 www.baidu.com,www.linuxtone.org
3.3.3.3. www.sina.com.cn
awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' file
創建html文件 ::cat 運維必備.html |sed -e '/^$/d'|sed -n '2,$ s/^/\<br\>/p' |sed 's/$/\<\/br\>/' >a.html
內核、Shell、文件系統這三個部分構成了linux系統
合并兩個文件
paste 1 2|awk '{if($1 ~$2) print $1 ;else print $0}'
a=
date +"%Y-%m-%d %H : %M : %S" -d "5 min ago"
本文由用戶 MaricelaCra 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!