1. 程式人生 > >文本查看和處理命令

文本查看和處理命令

cat sort less cut tr

文本查看命令: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

文本查看和處理命令