文本處理工具

文本處理工具

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

文件查看命令: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 22:07
下一篇 2016-08-07 22:07

相關推薦

  • 循環體

    for 變量名in 列表;do 循環體 done ?執行機制: 依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體; 直到列表中的元素耗盡,循環結束 列表生成方式: (1) 直接給出列表 (2) 整數列表: (a) {start..end} (b) $(seq[start [step]] end) (3) 返回列表的命令  &nbsp…

    Linux干貨 2016-08-21
  • 虛擬機的三種網絡模式

    前言     虛擬機的網絡模式,是環境部署時的重要環節。不同的運行環境對網絡的要求也是不用的,本章節重點介紹虛擬機的三種網絡模式、以及他們之間的區別 虛擬機網絡模式      無論是vmware,virtual box,virtual pc等虛擬機軟件,一般來說,虛擬機有三種網絡模式: 1.橋接 2…

    2017-07-11
  • N26 第二周

    本周學習了: linux的目錄層級結構、常見文件類型、bash基本特性、文件的基本管理命令、globbing文件通配符、用戶管理命令 開始作業! 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。    文件管理命令有:ls,cp,mv,pwd,mkdir,rmdir,touch  …

    Linux干貨 2017-01-12
  • 學習宣言

    沒有學不會的技術,只有不勤奮的人!

    Linux干貨 2016-12-28
  • Bash基本特性之命令狀態返回值和命令行展開

    Bash基本特性之命令狀態返回值和命令行展開 Bash的工作特性 命令執行狀態返回值 bash中一條命令的執行,會產生兩種返回結果:命令結果及命令執行狀態結果。一條命令成功執行,其執行狀態返回值為0。如果未能成功執行,其返回值為1-255。 ~]# echo $? 用于查看命令執行狀態返回值 引用命令的執行結果$(COMMAND…

    Linux干貨 2016-11-06
  • vsftpd

    練習:完成vsftpd配置 (1) 禁錮系統用戶于家目錄 [root@node3 ~]# yum -y install vsftpd [root@node3 ~]# vim /etc/vsftpd/vsftpd.conf chroot_local_user=YES &n…

    Linux干貨 2016-10-16
欧美性久久久久