文本處理工具

文件 查看命令:cat, tac,rev
cat [OPTION]… [FILE]…
-E: 顯示行結束符$
-n: 對顯示出的每一行進行 編號
-A :顯示所有控制符
-b: : 非空行編號
-s :壓縮連續的空行成一行

分頁查看文件內容
more: 分頁查看文件
more [OPTIONS…] FILE…
-d: 顯示翻頁及退出提示
less :一頁一頁地查看文件或STDIN 輸出

查看時有用的命令包括:
n/N 跳到下一個 個 或 或 上 一個匹配
less 命令是man

顯示文本前或后行內容
head [OPTION]… [FILE]…
-c #: 指定獲取前# 字節
-n #: 指定獲取前#行 行
-#: : 指定行數
tail
tail [OPTION]… [FILE]…
-c #: 指定獲取后# 字節
-n #: 指定獲取后#行 行
-#: :
-f: 跟蹤顯示文件新追加的內容

按列抽取文本cut 和合并文件paste
cut [OPTION]… [FILE]…
-d DELIMITER: 指明分隔符,默認tab
-f FILEDS:

: 第# 個字段

,#[,#] :離散的多個字段,例如1,3,6

-# :連續的多個字段, 例如1-6

混合使用:1-3,7
-c 按字符切割
–output-delimiter=STRING 指定輸出分隔符

cut 和paste
顯示文件或STDIN 數據的指定列
cut -d: -f1 /etc/passwd
cat /etc/passwd | cut -d: -f7
cut -c2-5 /usr/share/dict/words
  paste 合并兩個文件同行號的列到一行
paste [OPTION]… [FILE]…
-d 分隔符: 指定分隔符,默認用TAB
-s : 所有行合成一行顯示
paste f1 f2
paste -s f1 f2

分析文本的工具
 文本數據統計:wc
 整理文本:sort
 比較文件:diff 和patch

收集文本統計數據wc
 計數單詞總數、行總數、字節總數和字符總數
 可以對文件或STDIN 中的數據運行
$ wc story.txt
39 237 1901 story.txt
行數 字數 字符數
使用 -l 來只計數行數
使用 -w 來只計數單詞總數
使用 -c 來只計數字節總數
使用 -m 來只計數字符總數

文本排序sort
 把整理過的文本顯示在STDOUT ,不改變原始文件
sort [options] file(s)
  常用選項
  -n 執行按數字大小整理
  -f 選項忽略(fold )字符串中的字符大小寫
  -u 選項(獨特,unique )刪除輸出中的重復行
  -t c 選項使用c 做為字段界定符
  -k X 選項按照使用c 字符分隔的X

uniq
 uniq 命令:從輸入 中刪除前后相接的 重復的 行
 uniq [OPTION]… [FILE]…
-c: 顯示每行重復出現 的次數
-d: 僅顯示重復過 的行
-u: 僅顯示不曾重復 的行
連續且完全相同方為重復
  常和sort 命令一起配合使用:
sort userlist.txt | uniq -c

比較文件
 比較兩個文件之間的區別
$ diff foo.conf-broken foo.conf-works
5c5
< use_widgets = no

> use_widgets = yes
? 注明第5 行有區別(改變)

復制對文件改變patch
 diff 命令的輸出被保存在一種叫做“補丁”的文件中
  使用 -u 選項來輸出“統一的(unified )”diff 格式文件,最適用于補丁文件。
 patch 復制在其它文件中進行的改變(要謹慎使用)
  適用 -b 選項來自動備份改變了的文件
$ diff -u foo.conf-broken foo.conf-works > foo.patch
$ patch -b foo.conf-broken foo.patch

文件查找
 在文件系統上查找符合條件 的文件
 文件查找:locate, find
非實時查找( 數據庫查找) :locate
實時查找:find

locate
  查詢系統上預建的文件索引數據庫
/var/lib/mlocate/mlocate.db
  依賴于事先構建 的索引
索引的構建是在系統較為空閑時自動進行( 周期性 任務),管理員 手動更新數據庫(updatedb)
  索引構建過程需要遍歷整個根文件系統,極 消耗資源
  工作特點:
? 查找 速度 快
? 模糊 查找
? 非實時查找
? 搜索的是文件的全路徑,不僅僅是文件名
? 可能只搜索用戶具備讀取和執行權限的目錄

locate 命令
  locate KEYWORD
  有用的選項
-i 不區分大小寫的搜索
-n N 只列舉前N 個匹配項目
  locate conf
搜索名稱或路徑中帶有“conf ”的文件
  locate -r ‘.conf$’
使用Regex 來搜索以“.conf ”結尾的文件

find
  實時查找工具,通過遍歷指定路徑完成文件查找
  工作特點:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具備讀取和執行權限的目錄
find
  語法:
  find [OPTION]… [ 查找路徑] [ 查找條件] [ 處理動作]
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、
權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕
查找條件
指搜索層級
-maxdepth level 最大搜索目錄深度, 指定 目錄為第1級 級
-mindepth level 最大 搜索目錄深度
  根據文件名和inode 查找:
-name ” 文件名稱” :支持使用glob
*, ?, [], [^]
-iname ” 文件名稱” :不區分字母大小寫
-inum n 按inode 號查找
-samefile name 相同inode 號的文件
-links n 鏈接數為n 的文件
-regex “PATTERN” :以PATTERN 匹配整個文件路徑字符串,而不僅僅是文件名稱
根據屬主、屬組查找:
-user USERNAME :查找屬主為指定用戶(UID) 的文件
-group GRPNAME: 查找屬組為指定組(GID) 的文件
-uid UserID :查找屬主為指定的UID 號的文件
-gid GroupID :查找屬組為指定的GID 號的文件
-nouser :查找沒有屬主的文件
-nogroup
根據文件類型查找:
-type TYPE:
? f: 普通文件
? d: 目錄文件
? l: 符號鏈接文件
? s :套接字文件
? b: 塊設備文件
? c: 字符設備文件
? p: 管道文件
組合條件:
與:-a
或:-o
非:-not, !
  德 德· 摩根 定律:
(非 非 P) 或 或 (非 非 Q) = 非(P 且 且 Q)
(非 非 P) 且 且 (非 非 Q) = 非(P 或 或 Q)
  示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

find 示例
  find -name snow.png
? 搜索名為snow.png 的文件
  find -iname snow.png
? 不分大小寫地搜索名為snow.png 、Snow.png、 、
SNOW.PNG 等等的文件
  find / -name “.txt”
  find /var –name “
log
  find -user joe -group joe
  搜索被用戶joe 以及組群joe
? find -user joe -not -group joe
? find -user joe -o -user jane
? find -not ( -user joe -o -user jane )
? find / -user joe -o -uid 500
找出/tmp 目錄下,屬主不是root ,且 文件名 不以f 開頭的 文件
find /tmp ( -not -user root -a -not -name ‘f
‘ ) -ls
find /tmp -not ( -user root -o -name ‘f‘ ) –ls
  排除 目錄
? 示例:查找/etc/ 下,除/etc/sane.d 目錄的其它所有.conf 后綴的文件
find /etc -path ‘/etc/sane.d’ -a -prune -o -name “
.conf” -print
根據文件大小來查找:
-size [+|-]#UNIT
常用單位:k, M, G

UNIT: (#-1, #]

如:6k 表示(5k,6k]
-#UNIT :[0,#-1]
如: :-6k 表示[0,5k]
+#UNIT :(#, ∞ )
如: :+6k 表示(6k ,∞ )

根據時間戳:
以“天”為單位;
-atime [+|-]#,

: [#,#+1)

+#: [#+1, ∞ ]
-#: [0,#)
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin
根據權限查找:
-perm [/|-]MODE
MODE: 精確權限匹配
/MODE :任何一類(u,g,o) 對象的權限中只要能一位匹配即可,或關系,+ 從centos7 開始淘汰
-MODE :每一類對象都必須同時擁有指定權限,與關系0 表示不關注
? find -perm 755 會匹配權限模式恰好是755 的文件
? 只要當任意人有寫權限時,find -perm +222 就會匹配
? 只有當每個人都有寫權限時,find -perm -222 才會匹配
? 只有當其它人(other )有寫權限時,find -perm -002才會匹配

處理動作
  -print :默認的處理動作,顯示至屏幕
  -ls :類似于對查找到的文件執行“ls -l” 命令
  -delete :刪除查找到的文件
  -fls file :查找到的所有文件的長格式信息保存至指定文件中
  -ok COMMAND {} \; 對查找到的每個文件執行由 COMMAND指定的命令,對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND 指定的命令
  {}: 用于引用查找到的文件名稱自身
  find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

參數 替換 換xargs
  用于 產生 某個命令的 參數, ,xargs 入 可以讀入 stdin 的數據,并且以空格符 或 回車符將 將 stdin 的數據分隔 成為arguments
  注意:文件 名 或者是其他意義的名詞內含有 空格符 的情況
  有些命令不能接受過多參數 ,命令執行 可能會 失敗,xargs可以解決
  示例:
find | xargs COMMAND
find /sbin -perm +7000 | xargs ls -l

find 示例
  find -name “.conf” -exec cp {} {}.orig \;
? 備份配置文件,添加.orig 這個擴展名
  find /tmp -ctime +3 -user joe -ok rm {} \;
? 提示刪除存在時間超過3天以上的joe 的臨時文件
  find ~ -perm -002 -exec chmod o-w {} \;
? 在你的主目錄中尋找可被其它用戶寫入的文件
  find /data –type f -perm 644 -name “
.sh” –exec
chmod 755 {} \;
  find /home –type d -ls

原創文章,作者:SDS,如若轉載,請注明出處:http://www.www58058.com/71274

(0)
SDSSDS
上一篇 2017-03-17 19:28
下一篇 2017-03-18 02:41

相關推薦

  • 難搞的grep、find練習題

    馬哥教育網絡班21期-第五周博客作業 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@caicai ~]# grep –color "^[[:space:]]\+" /boot/grub/grub.conf    …

    Linux干貨 2016-07-26
  • 如何自建系統內部 yum 倉庫

       準備:     a.素材:一套centos6.9和一套centos7.3的ISO鏡像光盤     環境:1.centos6.9和centos7.3,安裝好的系統各一套(土豪隨意 )     b.建立前請關閉防火墻,防止防火墻的干擾     &n…

    2017-08-05
  • 實例;編譯安裝apache 2.2,并啟動此服務

    基于c語言的源代碼編譯安裝,通常有三個步驟     ./configure         (1)通過選項傳遞參數,指定啟用特性,安裝路徑等:執行時會參考用戶的指定以及makefile.in文件生成makefile.  &nbsp…

    Linux干貨 2016-08-24
  • 【N25第七周作業】

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 mke2fs 1.42.9 (28…

    2017-04-13
  • 18-系統啟動故障修復-實踐

    說明:重啟時可以選擇性在vmlinuz所在行末尾添加 selinux=0;或者直接編輯/etc/selinus/config文件,更改 SELINUX=disabled 關閉SELINUX??梢员苊獯驑撕灒澥訒r間 以下操作都需要進入bootloader引導加載項修改內核啟動參數,在vmlinuz所在行末尾添加一個啟動選項 如何進入bootloader引…

    2017-04-02
  • 軟件包管理 — rpm & yum

    軟件包管理 包管理器     二進制應用程序的組成部分:         二進制文件、庫文件、配置文件、幫助文件     程序包管理器:      &…

    Linux干貨 2016-08-24
欧美性久久久久