1. 程式人生 > 其它 >sort uniq tr cut eval常用命令

sort uniq tr cut eval常用命令

一、排序命令——sort

以行為單位對檔案內容進行排序,也可以根據不同的資料型別來排序 1、格式 2、常用選項 選項 說明 -f 忽略大小寫,預設會大寫字母排在前面 -b 忽略每行前面的空格 -n 按照數字進行排序 -r 反向排序 -u 等同uniq,表示相同的資料僅顯示一行,去重 -t 指定欄位分隔符,預設使用tab鍵分隔 -k 指定排序欄位 -o <輸出檔案> 將排序後的結果轉存至指定檔案 sort -n testfile2 sort -t ':' -k 3 -n /etc/passwd du -a | sort -nr -o du.txt 3、示例

二、去除重複行操作命令——uniq

用於報告或者忽略檔案中連續的重複行,常與sort命令結合使用 1、格式 2、常用選項 選項 說明 -c 進行計數,並刪除檔案中重複出現的行 -d 僅顯示連續的重複行 -u 僅顯示出現一次的行 uniq testfile3 sort -n testfile3 | unig -C 3、示例

三、字元轉換命令——tr

常用於對來自標準輸入的字元進行替換、壓縮和刪除 1、格式 2、常用選項 選項 說明 -c 保留字符集1的字元,其他的字元(包括換行符\n)用字符集2替換 -d 刪除所有屬於字符集1的字元 -s 將重複出現的字串壓縮為一個字串,用字符集2 替換 字符集1 -t 字符集2 替換 字符集1,不加選項同結果 3、引數 字符集1: 指定要轉換或刪除的原字符集。當執行轉換操作時,必須使用引數”字符集2“指定轉換操作時,必須使用引數”字符集2“指定轉換的目標字符集。但執行刪除操作時,不需要引數”字符集2“ 字符集2: 指定要轉換成的目標字符集 4、示例 刪除空行 echo -e "aa\n\n\n\n\nbb" | tr -s "\n" cat testfile5 | tr -s "\n" 把路徑變數中的冒號 “:”,替換成換行符 “\n”
echo $PATH | tr -s ":" "\n" echo -e "aa\n\n\n\n\nbb" | tr -s "\n" ":" 刪除Windows檔案“造成"的’^M’字元 cat abc.txt | tr -s "\r" "\n" > new_file cat abc.txt | tr -d "\r" > new_file Linux中遇到換行符("\n")會進行回車+換行的操作,回車符反而只會作為控制字元("^M")顯示,不發生回車的操作。而windows中要回車符 +換行符("\r\n")才會回車+換行,缺少一個控制符或者順序不對都不能正確的另起一行 cat -v abc.txt
dos2unix abc.txt

四.陣列排序新方法

echo ${array[*]} | tr ' ' '\n'| sort-n > file a=0 for i in $(cat file) do array[$a]=$i let a++ #array+=($i) done

五、顯示、連線檔案命令——cut

顯示行中的指定部分,刪除檔案中指定欄位 1、格式 2、常用選項 選項 說明 -b 以位元組為單位進行分割 ,僅顯示行中指定直接範圍的內容 -c 以字元為單位進行分割 , 僅顯示行中指定範圍的字元 -d 自定義分隔符,預設為製表符”TAB” -f 顯示指定欄位的內容 , 與-d一起使用 -n 取消分割多位元組字元 –complement 此選項用於排除所指定的欄位 –out-delimiter 更改輸出內容的分隔符 cut -d ':' -f 1 /etc/passwd grep '/bin/bash' /etc/passwd | cut -d ':' -f 1-4,6,7 #以-分隔的開始欄位和結束欄位指定欄位的範圍 grep '/bin/bash' /etc/passwdIcut -d ': ' --complement -f 2 #排除第二個欄位 cut -d ':' -f1, 7 --output-delimiter=' /etc/ passwd #輸出分隔符使用空格分隔 3、示例 i=123456789 echo $i | cut -b 1-3 #起始位置從1開始 123 echo ${i:0:3} #起始位置從0開始 expr substr $i 1 3 #起始位置從1開始

六、eval命令

加上eval時,shell會執行命令之前掃描兩次。eval命令將首先會先掃描命令列進行所有命令適用於那些一次掃描無法實現其功能的變數。該命令對變數進行兩次掃描。 示例