文本處理工具

文本處理工具

文件內容:less和 cat,more
文件截?。篽ead和tail
文本內容處理:tr
按列抽取:cut
按關鍵字抽?。篻rep

文件查看命令:cat, tac,rev

cat  復制標準輸入到當前輸出

語法:cat [OPTION]… [FILE]…
選項:

  • -E: 顯示行結束符$

  • -n: 對顯示出的每一行進行編號

  • -A:顯示所有控制符

  • -b:非空行編號

  • -s:壓縮連續的空行成一行

cat ,tac,rev 區別
cat是正常讀取文件,tac是把文件行號反過來讀,行里面的內容保持原樣而rev就行號順序不變,內容包括單詞全部反過來

[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m

[root@localhost ~]# tac /etc/issue

Kernel \r on an \m
\S
[root@localhost ~]# rev /etc/issue
S\
m\ na no r\ lenreK

分頁查看文件內容 more less

more: 分頁查看文件

語法:more [OPTIONS…] FILE…    

  • -d: 顯示翻頁及退出提示

less:一頁一頁地查看文件或STDIN輸出

查看時有用的命令包括:

/文本 搜索 文本
?文本  搜索 文本 向上搜索
n/N 跳到下一個 或 上一個匹配
less 命令是man命令使用的分頁器

顯示文本前或后行內容

語法:head [OPTION]… [FILE]…

  • -c #: 指定獲取前#字節

  • -n #: 指定獲取前#行

  • -#: 指定行數

tail

語法:tail [OPTION]… [FILE]…

  • -c #: 指定獲取后#字節

  • -n #: 指定獲取后#行

  • -#:

  • -f: 跟蹤顯示文件新追加的內容,常用日志監控
    -一般用法

     [root@localhost ~]# tail -n 0 -f /var/log/messages &
     [1] 10275     --------------自動追加最后一行日志信息

 tr       單個文字轉換處理(translate character)

功能說明:轉換字符。
語  法:tr [-cdst][第一字符集][第二字符集]
補充說明:tr指令從標準輸入設備讀取數據,經過字符串轉譯后,輸出到標準輸出設備。(對位轉換)
參  數:

  • -c    取代所有不屬于第一字符集的字符。

  • -d    刪除所有屬于第一字符集的字符。

    • -s    把連續重復的字符以單獨一個字符表示。

  • -t    對位替換。

例如、將文件中每個單詞(字母)顯示在獨立的一行,并無空行

[root@localhost ~]# cat file1 
adsfasf
a  fsf fsa
   afsa
asfsa  afasfa
qfwf
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
sss
sss
sss
t:
f
[root@localhost ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n'
adsfasf
a
fsf
fsa
afsa
asfsa
afasfa
qfwf
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
sss
sss
sss
t
f

-t選項是對位替換

[root@localhost ~]# echo asdfg |tr -t 'ad' 'X'
Xsdfg
[root@localhost ~]# echo asdfgh |tr -t 'asd' 'ASWDF'
ASWfgh

注意:
tr替換的話如果第一字符和第二字符數目不相等時,以第二字符為準

[root@localhost ~]# echo asdfg |tr 'asd' 'AS'
ASSfg
[root@localhost ~]# echo asdfg |tr 'asd' 'ASDF'
ASDfg

cut

功能:cut命令用來顯示行中的指定部分,刪除文件中指定字段。
語法:cut(選項)(參數) 文件
選項 :

  • -c:僅顯示行中指定范圍的字符;

  • -d:指定字段的分隔符,默認的字段分隔符為“TAB”;

  • -f:顯示指定字段的內容;一般 -f 1,2,3

  • -n:與“-b”選項連用,不分割多字節字符;

例如:
   切出/etc/passwd下的用戶名和對應的shell

[root@localhost ~]# cat /etc/passwd | cut -d ':' -f 1,7

root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin

切出/etc/passwd下指定范圍的字段

[root@localhost ~]# cat /etc/passwd | cut -c 5-25
:x:0:0:root:/root:/bi
x:1:1:bin:/bin:/sbin/

paste 橫向合并兩個文件同行號的列到一行

語法:paste [OPTION]… [FILE]…

  • -d 分隔符:指定分隔符,默認用TAB

  • -s : 所有行合成一行顯示
    paste f1 f2
    paste  -s f1 f2

分析文本的工具

wc  收集文本統計數據

功能: 計數單詞總數、行總數、字節總數和字符總數
用處: 可以對文件或STDIN中的數據運行

$ wc story.txt 
39   237  1901 story.txt
行數 字數 字符數

使用 -l 來只計數行數
使用 -w 來只計數單詞總數
使用 -c 來只計數字節總數
使用 -m 來只計數字符總數

sort 文本排序

用處: 把整理過的文本顯示在STDOUT,不改變原始文件
語法:$ sort [options] file(s)
常用選項:

  • -r  執行反方向(由上至下)整理

  • -n   執行按數字大小整理

  • -f  選項忽略(fold)字符串中的字符大小寫

  • -u 選項(獨特,unique)刪除輸出中的重復行

  • –t c 選項使用c做為字段界定符

  • –k X 選項按照使用c字符分隔的X列來整理能夠使用多次

uniq 從輸入中刪除重復的前后相接的行

語法: uniq [OPTION]… [FILE]…

  • -c: 顯示每行重復出現的次數

  • -d: 僅顯示重復過的行

  • -u: 僅顯示不曾重復的行
    注意:連續且完全相同方為重復
    常和sort 命令一起配合使用:
    sort userlist.txt |  uniq -c———統計個單詞出現的次數統計/etc/passwd里面各種shell相同的用戶有多少

[root@localhost ~]# cat /etc/passwd|cut -d: -f 7 |sort | uniq -c
     16 /bin/bash
     10 /bin/csh
      1 /bin/sync
      1 /etc/tcsh
      1 /sbin/halt
     38 /sbin/nologin
      1 /sbin/shutdown

diff 比較文件

語法:diff [選項] [文件一]  [文件二]

$ diff foo.conf-broken foo.conf-works
5c5
< use_widgets = no
—use_widgets = yes
5c5的意思是: 注明第5行有區別

patch 復制對文件改變(打補?。?/span>

前提:

  1. diff 命令的輸出被保存在一種叫做“補丁”的文件中

  2. 使用 -u 選項來輸出“統一的(unified)”diff格式文件,最適用于補丁文件。

  3. patch 命令復制在其它文件中進行的改變(要謹慎使用?。?br />**   適用 -b 選項來自動備份改變了的文件
    $ diff -u foo.conf-broken foo.conf-works > foo.patch

$ patch -b foo.conf-broken foo.patch**

對文件一還原成文件二的方法:

[root@qzx ~]# diff /tmp/issue1 /tmp/issue2
3a4
> hello  --------文件二于文件一 hello
[root@qzx ~]# diff -u /tmp/issue1 /tmp/issue2 > diff.txt ----把文件一和文件二中的不同點找出并打包
[root@qzx ~]# patch -b /tmp/issue1 diff.txt 
patching file /tmp/issue1 ----------讓文件一還原成文件二
[root@qzx ~]# cat /tmp/issue1
CentOS release 6.8 (Final)
Kernel \r on an \m

hello

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

(0)
qzxqzx
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • 決不放棄

    堅持到底!

    Linux干貨 2017-11-17
  • 第六周作業

    請詳細總結vim的使用 模式轉換 編輯模式:默認模式     編輯模式–>輸入模式         i:insert,在光標所在處插入         …

    Linux干貨 2017-02-15
  • 8.3-ACL權限詳解(命令篇)

    前言         我們都知道Linux有三種身份(owner,group,other)搭配三種權限(r,w,x)以及三種特殊權限(SUID,SGID,SBIT), 但是某些時候這些組合不能滿足復雜的權限需求。 例如      …

    Linux干貨 2016-08-04
  • Centos7 PHP-FPM源碼安裝

    PHP-FPM源碼安裝 安裝必要組件 yum install -y openssl-devel traceroute libtool unzip gcc gcc-c++ autoconf net-snmp-devel vim wget sysstat lrzsz  man tree mysql-devel ntpdate rsync libxml2…

    系統運維 2016-09-06
  • linux下文件類型簡介

    linux下文件類型簡介 概述 文件類型縮寫及別稱 文件類型的縮寫、翻譯及別稱 文件類型 縮寫 英文 其他名稱 普通文件 – Regular file 目錄文件 d Directory file 塊設備文件 b Block special file 塊區文件 字符設備文件 c Character special file 字符設備文件 數據傳送 …

    Linux干貨 2016-10-17
  • 用戶\組的管理

    1、用戶的標識符:UID與GID   每個登錄的用戶都至少會識別兩個ID,那么就是UID與GID(username與groupneme)當我們要顯示文件屬性時,系統會根據/etc/passwd與/etc/group的內容,找到id對應的賬號與組名再顯示出來。 /etc/passwd文件結構   他的每一行都代表一個賬號,并且里面許多賬號都…

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