文本查看和處理命令
文本查看命令:hexdump,od,cat,tac,head,tail,more,less
文本處理命令:tr,cut,wc,sort,uniq,rev,colrm,paste,diff,path
文本查看命令
hexdump
查看文件,並以ASCII碼或者十六進制(hexadecimal),十進制(decimal),八進制(octal)顯示
hexdump [options] file... -b 單字節八進制顯示 -c 單字節字符顯示 -C 輸出規範的十六進制和ASCII碼 -d 兩字節十進制顯示 -o 兩字節八進制顯示 -x 兩字節十六進制顯示 -e 指定格式字符串 -n 只格式化輸入文件的前幾個字節 -s 從偏移量開始輸出
執行命令#more ab ab ab ab 12 執行命令#hexdump -b ab 0000000 141 142 040 141 142 012 141 142 012 061 062 012 000000c 執行命令#hexdump -c ab 0000000 a b a b \n a b \n 1 2 \n 000000c 執行命令#hexdump -C ab 00000000 61 62 20 61 62 0a 61 62 0a 31 32 0a |ab ab.ab.12.| 0000000c 執行命令#hexdump -o ab 0000000 061141 060440 005142 061141 030412 005062 000000c
od
用於輸出文件的八進制、十六進制或其它格式編碼的字節
#od -c ab 0000000 a b a b \n a b \n 1 2 \n 0000014
cat
cat OPTION... [FILE]... -n 顯示行號,包含空行 -b 顯示非空行號,即空行跳過不顯示行號 -s 連續的空行顯示為一個空行 -A 顯示所有控制符 -E 顯示行結束符$
cat > f1
type something
ctrl+d 結束後內容會保存到f1,類似於簡單的文本編輯工具
cat f1 f2 > f3 //將文件f1和f2的內容合並到f3
隨機生成20位口令:
cat /dev/urandom | tr -dc ‘0-9a-zA-Z‘ |head -c20
tac
功能同cat,倒序顯示,即末尾行顯示為第一行,首行顯示為最後一行
head
查看文本前幾行
-c 指定查看前#個字節,一個漢字是三個字節
-n 指定查看前#行,n可以省略
-v 顯示文件名的頭信息
-q 不顯示文件名的頭信息
tail
查看文本後幾行
-c 指定查看後#個字節 -n 指定查看後#行,n可以省略 -f 跟蹤顯示文件新追加的內容,常用於日誌監控 -v 顯示文件名的頭信息 -q 不顯示文件名的頭信息 ls /etc/ | head -3 //顯示ls列出的前3個文件或目錄 head -5 a.log tail -0 -f m.log 只查看追加的新內容 tail -n0 -f /var/log/messages & who|head -1 顯示命令結果的第一行 cat -n m.log |head -1000|tail -1 查看結果的第1000行 ifconfig eth0|head -2|tail -1 查看eth0的第二行IP地址行
more
分頁查看文件,空格翻頁,b鍵向上翻頁,q鍵退出
-d 顯示翻頁及退出提示
less
分頁查看文件或stdin輸出,允許用戶前後翻頁,less命令是man命令使用的分頁查看工具
/ 搜索; n下一個; N上一個
文本處理命令
tr
轉義壓縮字符
tr [OPTION]... SET1 [SET2] -d 刪除指定字符 -s 壓縮重復字符並轉換為對應位的指定字符
tr ‘abc‘ ‘xyz‘ //將所有abc字符替換為xyz 輸入aaaaabbbccceedddfff回車,查看效果 tr ‘abcd‘ ‘xyz‘ tr ‘a-z‘ ‘A-Z‘ //小寫轉大寫 tr ‘1-9‘ ‘A-I‘ //數字轉字母 tr -d ‘a-d‘ 刪除包含‘a-d‘的所有字符 tr ‘a-z‘ ‘A-Z‘ < /etc/issue > f1 tr命令不會改變源文件的內容 tr -s 把連續重復的字符以單獨一個字符表示 #more ab aaaaaaaaaabbbbbbbbbccccccc #more ab | tr -s ‘abc‘ ‘jkl‘ jkl tr -t 將第一個字符集對應的字符轉化成第二個字符集對應的字符,位數對應 #more ab | tr -t ‘abc‘ ‘jkl‘ jjjjjjjjjjkkkkkkkkklllllll #more ab | tr -t ‘abc‘ ‘jk‘ jjjjjjjjjjkkkkkkkkkccccccc #cat f1 aaa bbb ccc aeeg #hexdump f1 #hexdump -c f1 tr ‘\n‘ ‘ ‘ < f1 //將換行符轉換為空格顯示 tr ‘\n‘ ‘\v‘ < f1 //將換行符轉換為階梯式顯示 tr ‘\n‘ ‘\t‘ < f1 //將換行符轉換為tab鍵顯示 tr ‘[ac]‘ ‘8‘ < f1 //將ac字符轉換為8 cat > f1 單行重定向,回車之後才會提交保存到文件,按Ctrl+d離開 使用 < 來從定向標準輸入 cat > f2 < f1 復制f1內容到f2 cat > f1 << eof 多行重定向,定義終止詞,自定義,這裏定義為eof aaa bbb cc eof //最後一行必須以eof結束,且不能加空格
cut
按列提取文本
-d 指定分隔符,默認為tab -f 指定列數,可以為 # 或 #,# 或 #-# 。 #:表示第#個字段; #,#[,#]:表示離散的多個字段,例如-f 1,3,6; #-#:連續的多個字段,例如-f 1-6;還可以混合使用:-f 1-3,7。 -c 按字符切割; --output-delimiter=string:指定輸出分隔符
more passwd |cut -d: -f1,3,4 more passwd |cut -d: -f1-5 more passwd |cut -d: -f1-3,7 more passwd |cut -d: -f1-3,7 --output-delimiter=, df |cut -c44-46 //centos6.8 df |cut -c39-42 //centos7.3 df| tr -s " "|cut -d" " -f5|tr -dc "[:digit:]\n" df|tr -s " " "%"|cut -d% -f5 cut -d: -f1 /etc/passwd cat /etc/passwd|cut -d: -f7 cut -c2-5 /usr/share/dict/words |more 截取IP: centos6:ifconfig eth0 | head -2|tail -1|cut -d: -f2| cut -d" " -f1 centos7:ifconfig ens33|head -2|tail -1|cut -dt -f2|cut -d" " -f2 ifconfig ens33|head -2|tail -1|tr -s " "|cut -d" " -f3
wc
文本數據統計wc=word count
wc f1
行數 單詞數 字符數 文件名
-l 行數 -w 單詞數 -c 字節數 -m 字符數 wc -l /usr/share/dict/linux.words 479828 /usr/share/dict/linux.words (2017年6月3日centos7.3)
sort
文本排序
把整理過的文本顯示在stdout,默認按照字母排序,不改變原始文件
-b 忽略行首的空格字符 -d 排序時,只處理英文字母,數字和空格字符,忽略其他字符 -f 忽略大小寫字母 -n 按數值大小排序 -o 將排序後的結果保存到指定文件 -r 反向排序 -h 按可視化大小 -t 指定字段分隔符 -k 按指定分隔符的某一列來排序,能夠使用多次 -u unique,刪除輸出中的重復行 sort -t: -k3 -n passwd cut -d: -f1,3 passwd|sort -t: -k2 -nr df|tr -s " " "%"|cut -d% -f5 |sort -n | tail -1 //提取分區利用率最大值 df -i|tr -s " " "%"|cut -d% -f5 |sort -n | tail -1 //-i顯示inode利用率
uniq
從輸入中刪除前後相接的重復行,重復指連續且完全相同
-c 顯示每行重復出現的次數 -d 僅顯示重復過的行 -u 僅顯示不曾重復過的行 cut -d"" -f 1 /var/log/httpd/access_log |sort|uniq -c|sort -nr last|cut -d" " -f1|sort |uniq -c netstat -nt | tr -s " " |cut -d" " -f5|cut -d: -f1|uniq -c stat -c %a /tmp 取出目錄的權限值 #stat /tmp | head -n4|tail -n1|cut -d "/" -f1| cut -d "(" -f2 //同上 1777
rev
反轉顯示,即鏡像顯示,每一行的首尾對調
colrm
刪除指定字符列
colrm 3 刪除第3列字符 colrm 2 5 刪除第2列到第5列的字符 #more ab 123456 123 456 12aa34567 aa bb cc #more ab | colrm 3 12 12 12 aa #more ab | colrm 3 5 126 1256 124567 aa cc
paste
合並文件顯示,默認按每行合並,不改變文件內容
-d 指定合並分隔符,默認為tab -s 所有行合成一行顯示 paste -d@ f1 f2 paste -s f1 f2
diff
比較兩個文件的區別
-u 輸出統一diff格式的文件,用於打補丁
#diff foo.conf-broken foo.conf-works 5c5 註明第5行有區別 < aa 不一樣的內容 --- > aaa diff /etc/passwd /etc/passwd.bak
path
復制對文件的改變,打補丁(謹慎使用)
-b 自動備份改變了的文件
#diff -u foo.conf-broken foo.conf-works > foo.path #path -b foo.conf-broken foo.patch
本文出自 “rackie” 博客,請務必保留此出處http://rackie386.blog.51cto.com/11279229/1931973
文本查看和處理命令