1. 程式人生 > >Linux 入門記錄:十七、Linux 文本/文件處理命令

Linux 入門記錄:十七、Linux 文本/文件處理命令

指定 臨時 log linux rdquo 重復行 意義 追加內容 重定向

一、文件瀏覽

cat      查看文件內容
more     以翻頁形式查看文件內容(只能向下翻頁)
less     以翻頁形式查看文件內容(可以上下翻頁)
head     查看文件的頭幾行(默認10行)
tail     查看文件的尾幾行(默認10行)

  

二、正則匹配打印行

命令 grep 用來全局匹配正則表達式並打印所在行:

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的用戶主目錄和登錄Shell

grep 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 filename
aspell list < filename

(CentOS 6.9 64位系統裏似乎沒有這個命令,也不常用,不詳述)

九、字符轉換

命令 tr 用於從標準輸入對字符進行轉換處理。如果處理來自文件的輸入,需要重定向。

刪除關鍵字:

tr -d ‘keyword‘ < filename

轉換大小寫:

tr ‘a-z‘ ‘A-Z‘ < filename

十、流式編輯——搜索替換

sed 命令是一種可以配合正則表達式使用的流式編輯工具。處理文件流時,把當前處理的行存儲在臨時緩沖區,稱“模式空間”(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 命令大全

Linux 入門記錄:十七、Linux 文本/文件處理命令