Linux 入門記錄:十七、Linux 命令列文本/檔案處理工具,linux檔案處理
一、檔案瀏覽
cat 查看檔案內容more 以翻頁形式查看檔案內容(只能向下翻頁)less 以翻頁形式查看檔案內容(可以上下翻頁)head 查看檔案的頭幾行(預設10行)tail 查看檔案的尾幾行(預設10行)
二、正則匹配列印行
命令 grep 用來全域匹配Regex並列印所在行:
grep 'mingc' /etc/passwd 在該檔案中匹配mingc的使用者資訊並列印所在行find / -user mingc | grep ".*\.png$" 尋找mingc的所有png檔案(管道操作)
常用參數:
-i 搜尋時忽略大小寫-n 顯示結果所在行數-v 輸出不匹配該正則的行(類似於一個取反操作)-An 在輸出的時候包含結果所在行之後的指定n行-Bn 在輸出的時候包含結果所在行之前的指定n行
三、文本切割列印欄位
命令 cut 常用來切割文本行、列印某些欄位:
cut -d:fl /etc/passwd 列印passwd檔案中冒號分割的第1個欄位(使用者名稱)(列出來多行的使用者名稱)grep mingc /etc/passwd | cut -d: -f3 列印mingc的使用者資訊匯總冒號分割的第3個欄位(uid)
常用參數:
-d 指定分割字元(預設Tab)-f 顯示特定序號的欄位(從1開始)-c 顯示特定範圍字元(從第幾個到第幾個)
樣本:
grep mingc /etc/passwd | cut -d: -f3 列印mingc的使用者資訊中冒號分割的第3個欄位(uid)grep mingc /etc/passwd | cut -d: -f6,7 列印mingc的使用者主目錄和登入Shellgrep mingc /etc/passwd | cut -c1-5 列印mingc的使用者資訊中第1~5個字元grep mingc /etc/passwd | cut -c1- 列印mingc的使用者資訊中第1個字元之後的所有字元grep mingc /etc/passwd | cut -c-5 列印mingc的使用者資訊中第5個字元之前的所有字元
四、文本統計
命令 wc 用於統計檔案的行數、單詞數、字元數等:
wc test.md
不帶參數時預設輸出一行,欄位格式為:
行數 單詞數 字元數 檔案名稱
常用參數:
-l 只統計行數-w 只統計單詞數-c 只統計位元組數-m 只統計字元數
五、文本排序
命令 sort 用於對檔案內容進行排序(也可以對STDIN進行排序):
sort filename
常用參數:
-r 逆向(倒序)排序-n 基於數字排序-f 忽略大小寫-u 去重複(剔除重複行)-t<分割符> 指定分隔字元(一般配合-k參數使用,單純分割毫無意義)-k n 當指定分割符時,按照第n個欄位進行排序(序號n從1開始)
-r、-n、-t、-k 參數可以配合使用:
中,把 test.md 檔案內容的每行按照冒號分割、基於數字對第3個欄位進行逆向排序。
六、剔除重複行
命令 sort -u 可以剔除檔案內容重複行,但副作用是進行了排序。
命令 uniq 可以剔除檔案內容(相鄰的)重複行:
七、文本比較
命令 diff 用來比較兩個檔案的區別:
diff test1.md test2.md
常用參數:
-i 忽略大小寫-b 忽略空白字元-u 統一顯示比較資訊(一般用來產生patch檔案)
樣本:
diff -u old.md new.md > update.patch 把檔案的更新資訊產生到補丁檔案
八、拼字檢查
命令 aspell 用來顯示檢查英文拼字:
aspell check filenameaspell list < filename
(CentOS 6.9 64位系統裡似乎沒有這個命令,也不常用,不詳述)
九、字元轉換
命令 tr 用於從標準輸入對字元進行轉換處理。如果處理來自檔案的輸入,需要重新導向。
刪除關鍵字:
tr -d 'keyword' < filename
轉換大小寫:
tr 'a-z' 'A-Z' < filename
十、流式編輯——搜尋替換
sed 命令是一種可以配合Regex使用的流式編輯工具。處理檔案流時,把當前處理的行儲存在臨時緩衝區,稱“模式空間”(pattern space),然後處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有發生改變,除非使用重新導向儲存輸出。sed 命令主要用來自動編輯一個或多個檔案、簡化對檔案的反覆操作、編寫轉換程式等。
文法:
sed [options] 'command' file(s)sed [options] -f scriptfile file(s)
常用參數 options:
-e<script> 指定一個script來處理文本-f<script> 指定一個script來處理文本-n 僅顯示處理後的結果
常用命令 command:
d 刪除行D 刪除第一行s 替換指定字元h 拷貝內容到緩衝區H 追加內容到緩衝區g 擷取緩衝區的內容,替換當前文本G 擷取緩衝區的內容,追加到當前文本後面p 列印行P 列印第一行q 退出sed
樣本:
sed 's/linux/unix/g' filename s表示搜尋替換,linux替換為unix,g表示全域替換,filename目標檔案sed 'l,50s/linux/unix/g' filename 1到50行進行全域替換sed -e 's/linux/unix/g' -e 's/ming/mingc/g' filename -e參數替換多個sed -f script filename 指定一個script來處理檔案
相關連結:sed 命令 - Linux 命令大全