Bash常用文本處理工具用法

來源:互聯網
上載者:User

1、grep命令:尋找檔案裡合格字串
一種強大的文本搜尋工具,它能使用Regex搜尋文本,並把匹配的行列印出來
文法格式: grep [options]
-i:ignore-case 忽略大小寫差別
-c:count 只列印匹配的總行數,不顯示匹配的內容資訊
-n:line-number 在匹配的行前面列印行號
-v:revert-match 反檢索,只顯示不匹配的行
-r:recursion遞迴地,讀取每個檔案夾下的所有檔案
-l :不顯示平常一般的輸出結果,只顯示符合的檔案名稱

2、awk命令:一個強大的文本處理工具,漸進式掃描,從第一行到最後一行
使用文法:awk 'pattern{action}' filename
pattern:Regex
action:輸出文法
你可以省略pattern和 action之一,但不能兩者同時省略,當省略pattern時沒有樣式匹配,表示對所有行(記錄)均執行操作,省略action時執行預設的操作——在標準輸出上顯示。
文法格式:awk [ -F re] [parameter...]
-F re:允許awk更改其欄位分隔符號
parameter: 該參數協助為不同的變數賦值
-v:定義變數
-f:指定指令檔
三種調用方式:
1、awk命令列
2、使用-f選項調用awk程式,例如:awk -f progfile file ,其中progfile是指定一個文字檔
3、利用命令直譯器調用awk程式,需要在awk指令碼聲明調用方式,例如:#!/bin/awk -f
命令列方式使用內容過濾:
[root@test ~]# awk '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#顯示分隔字元指定列(1列),分隔字元預設是空格,$1是顯示分隔字元前面一列

#顯示test檔案中匹配123的行
[root@test ~]# awk '/123/ {print $1}' test
#顯示所有以a或f開頭的行

4、sed命令:一種線上編輯器,它一次處理一行內容
處理時,把當前處理的行儲存在臨時緩衝區中,稱為'模式空間'(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重新導向儲存輸出。
常用參數:
i 插入
s 替換
e 多點編輯
d 刪除
a 追加到行後面
g 全部替換,無g只替換每行第一個
q 退出
#將所有包含aaa替換為jjj
sed 's/aaa/jjj/' test
#把這行注釋去掉,替換文本
sed -i 's/#ServerName www.example.com:80/ ServerName 192.168.0.202:80/g'
將所有包含/var/www/html/替換為/opt/web/,分隔字元'/'可以用別的符號代替,比如 ','  '_' '|' 等
sed -i s/\/var\/www\/html/\/opt\/web/' /etc/httpd/conf/httpd.conf
等同於:
sed -i 's_/var/www/html/_/opt/web/_' /etc/httpd/conf/httpd.conf
#插入一行到391行,包括特殊符號'/'
sed -i '391 s/^/AddType application\/x-httpd-php .php.html/' httpd.conf
#只列印第一行資料
sed -n '1p' /etc/passwd
#列印包含root的行,禁止預設輸出
sed -n '/root/p' /etc/passwd
#刪除13行
sed -i '13d' /etc/passwd
#刪除13行到最後一行
sed -i '13,$d' /etc/passwd
#將包含uucp的行刪除
sed -i '/uucp/d' /etc/passwd
5、find命令:尋找具有某一特徵的檔案(例如檔案許可權、檔案屬主、檔案長度、檔案類型等
用法:find [path] [options] [條件]
Path:尋找路徑
Options:選項
例如:
-name:按照檔案名稱尋找檔案
-mtime:按照檔案的更改時間來尋找檔案,後跟-n、+n來表示多少天內和以前
-user:按照檔案屬主來尋找檔案
-group:按照檔案所屬的組來尋找檔案
-type:尋找某一個類型的檔案,諸如:b(塊裝置)、d(目錄)、l(符號連結)、f(普通檔案)
-size:根據檔案大小來尋找檔案
#在根目錄尋找更改時間在5日以內的檔案
find /tmp -mtime -5
#在/var目錄下尋找更改時間在3日以前的檔案
find /var/ -mtime +3
#尋找系統中所有檔案長度為0的普通檔案,並列出他們的完整路徑
find / -type f -size 0 -exec ls -l {} \;
#尋找/var/log目錄中更改時間在7日以前的普通檔案,並刪除他們
find /var/log/ -type f -mtime +7 -exec rm {} \;
#找出使用者test擁有的檔案,並將他們拷貝到/root/test目錄中
find / -user test -exec cp {} /root/test \;
6、sort命令:對檔案中的各行進行排序
sort命令將逐行對檔案中的內容進行排序,如果兩行的首字元相同,該命令將繼續比較這兩行的下一字元,如果還相同,將繼續進行比較.
格式:sort [選項] 檔案
主要選項:
-r:倒序排序,預設是升序。
-n:按數值大小進行排序
-k:KeyDefinition 指定排序關鍵字。
-t:Character 指定 Character 作為欄位分隔符號
-d:使用字典順序排序。比較中僅考慮字母、數字和空格
-f:將小寫字母與大寫字母同等對待
-u:去掉重複的行,使檔案中的每一行唯一
7、uniq命令:刪除檔案中的重複行
檔案經過處理後在它的輸出檔案中可能會出現重複的行。例如,使用cat命令將兩個檔案合并後,再使用sort命令進行排序,就可能出現重複行。這時可以使用uniq命令將這些重複行從輸出檔案中刪除,只留下每條記錄的唯一樣本。
格式:uniq [選項] 檔案
主要選項:
-c:顯示行號
-d:只顯示重複行。
-u:只顯示檔案中不重複的各行。
8、cut命令:顯示檔案中每行的指定內容
格式:cut -d 分隔字元 [-cf] fields
-d:後面接的是分隔字元,預設情況下為Tab;
-c:後面接的是第幾個字元
-f:後面接的 是第幾個區塊
#列出/etc/passwd檔案中的所有使用者,按照升序排列
cut -d : -f 1 /etc/passwd | sort
#顯示/etc/passwd檔案下uid為0的使用者名稱以及uid。
cut -d : -f 1,3/etc/passwd|grep ':0$'
Regex'$'表示以字元結尾,'^'表示以某字元開始。
9、tr命令:從標準輸入刪除或替換字元,可以看為sed簡化軟體
常用選項的tr命令格式為:
-d 刪除字串1中所有輸入字元。
-s 刪除所有重複出現字元序列,只保留第一個。
#將小寫字元轉換成大寫
tr 'a-z' 'A-Z' < file
#將檔案中刪除所有Null 字元
tr –d ‘\0’< file
#刪除檔案中shell字元
cat test | tr -d 'shell'
#將檔案中所有abc字元替換efg並另存新檔新檔案
cat test | tr 'abc' 'efg' >new file
10、其他文本處理命令
cat:從頭開始顯示內容,並將所有內容輸出
常用參數,-n顯示輸出的行數編號
tac:從最後一行倒序顯示內容,並將所有內容輸出
head:預設顯示頭10行,-n指定顯示多少行數
tail:預設顯示最後10行,-n指定顯示多少行數,-f即時顯示內容
more:分屏查看文字檔
less:和more類似,但可以往前翻頁
nl:顯示時輸出行號
wc:計算檔案的位元組數、單詞數和行數
常用參數:-c統計位元組數,-l統計行數,-m統計字元數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.