Linux Shell程式設計(23)——文字處理命令
處理文字和文字檔案的命令
sort
檔案排序, 通常用在管道中當過濾器來使用. 這個命令可以依據指定的關鍵字或指定的字元位置, 對檔案行進行排序. 使用 -m 選項, 它將會合並預排序的輸入檔案. 想了解這個命令的全部引數請參考這個命令的 info 頁. 見 Example 10-9, Example 10-10, 和 Example A-8.
tsort
拓撲排序 ,讀取以空格分隔的有序對, 並且依靠輸入模式進行排序.
uniq
這個過濾器將會刪除一個已排序檔案中的重複行.這個命令經常出現在 sort命令的管道後邊 .
expand, unexpand
expand 將會把每個tab轉化為一個空格.這個命令經常用在管道中.
unexpand 將會把每個空格轉化為一個tab.效果與 expand 相反.
cut
一個從檔案中提取特定域的工具. 這個命令與 awk 中使用的 print $N命令很相似, 但是更受限. 在指令碼中使用cut命令會比使用 awk 命令來得容易一些. 最重要的選項就是 -d (欄位定界符) 和 -f (域分隔符) 選項.
grep
使用 正規表示式 的一個多用途文字搜尋工具. 這個命令本來是 ed 行編輯器中的一個命令/過濾器: g/re/p -- global - regular expression - print.
grep pattern [file...]
在檔案中搜尋所有 pattern 出現的位置, pattern 既可以是要搜尋的字串,也可以是一個正規表示式.
-i 選項在搜尋時忽略大小寫.
-w 選項用來匹配整詞.
-l 選項僅列出符合匹配的檔案, 而不列出匹配行.
-r (遞迴) 選項不僅在當前工作目錄下搜尋匹配, 而且搜尋子目錄.
-n 選項列出所有匹配行, 並顯示行號.
sort
檔案排序, 通常用在管道中當過濾器來使用. 這個命令可以依據指定的關鍵字或指定的字元位置, 對檔案行進行排序. 使用 -m 選項, 它將會合並預排序的輸入檔案. 想了解這個命令的全部引數請參考這個命令的 info 頁. 見 Example 10-9, Example 10-10, 和 Example A-8.
tsort
拓撲排序 ,讀取以空格分隔的有序對, 並且依靠輸入模式進行排序.
uniq
這個過濾器將會刪除一個已排序檔案中的重複行.這個命令經常出現在 sort命令的管道後邊 .
expand, unexpand
expand 將會把每個tab轉化為一個空格.這個命令經常用在管道中.
unexpand 將會把每個空格轉化為一個tab.效果與 expand 相反.
cut
一個從檔案中提取特定域的工具. 這個命令與 awk 中使用的 print $N命令很相似, 但是更受限. 在指令碼中使用cut命令會比使用 awk 命令來得容易一些. 最重要的選項就是 -d (欄位定界符) 和 -f (域分隔符) 選項.
grep
使用 正規表示式 的一個多用途文字搜尋工具. 這個命令本來是 ed 行編輯器中的一個命令/過濾器: g/re/p -- global - regular expression - print.
grep pattern [file...]
在檔案中搜尋所有 pattern 出現的位置, pattern 既可以是要搜尋的字串,也可以是一個正規表示式.
-i 選項在搜尋時忽略大小寫.
-w 選項用來匹配整詞.
-l 選項僅列出符合匹配的檔案, 而不列出匹配行.
-r (遞迴) 選項不僅在當前工作目錄下搜尋匹配, 而且搜尋子目錄.
-n 選項列出所有匹配行, 並顯示行號.
#!/bin/bash
# grp.sh: 一個非常粗糙的 'grep' 的實現.
E_BADARGS=65
if [ -z "$1" ] # 檢查傳遞給指令碼的引數.
then
echo "Usage: `basename $0` pattern"
exit $E_BADARGS
fi
echo
for file in * # 遍歷 $PWD 下的所有檔案.
do
output=$(sed -n /"$1"/p $file) # 命令替換.
if [ ! -z "$output" ] # 如果"$output" 不加雙引號將會發生什麼?
then
echo -n "$file: "
echo $output
fi # sed -ne "/$1/s|^|${file}: |p" 這句與上邊這段等價.
echo
done
echo
exit 0
相關文章
- 程式設計小技巧之 Linux 文字處理命令(二)程式設計Linux
- 命令列與Shell -> 文字處理命令之sed命令列
- Linux文字處理命令Linux
- Linux文字處理命令(轉)Linux
- Linux程式設計——用getopt處理命令列引數Linux程式設計命令列
- linux下的文字處理命令sedLinux
- Linux Shell程式設計(20)——基本命令Linux程式設計
- Linux Shell程式設計(21)——複雜命令Linux程式設計
- Linux Shell程式設計(24)——命令替換Linux程式設計
- LINUX學習(五)Linux文字處理命令Linux
- Linux文字處理命令sed基本使用示例Linux
- Linux Shell程式設計(22)——時間/日期 命令Linux程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- Shell程式設計-read命令程式設計
- 10 文字分析處理命令
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Linux Shell程式設計(27)——子shellLinux程式設計
- C語言程式設計——9,預處理命令C語言程式設計
- 幾個常用的文字處理shell 命令:find、grep、sort、uniq、sed、awk
- linux_shell_awk 處理 文字檔案 並匯入excelLinuxExcel
- 程式設計師幽默:一個搞笑的Linux Shell命令程式設計師Linux
- Linux系統程式設計(14)——shell常用命令Linux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- LOTO示波器動作程式設計功能(命令批處理)程式設計
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- Linux Shell 文字處理工具集錦Linux
- Linux中文字處理命令sed的使用示例分享Linux
- Shell指令碼逐行處理文字檔案技巧指令碼
- 《Linux命令列與shell指令碼程式設計大全》第五章理解shellLinux命令列指令碼程式設計
- Linux核心模組程式設計--中斷處理程式(轉)Linux程式設計
- 《Linux命令列與shell指令碼程式設計大全 第3版》Linux命令列---46Linux命令列指令碼程式設計
- Linux Shell程式設計(4)——shell特殊字元(上)Linux程式設計字元
- Linux Shell程式設計(5)——shell特殊字元(下)Linux程式設計字元
- linux下的SHELL程式設計Linux程式設計