文本查看及處理工具簡單命令

1、文件查看命令:

cat,tac,revcat [OPTION]... [FILE]...(查看文件內容)centos

-E:顯示行結束符$
-n:對顯示出的每一行進行編號
-A:顯示全部控制符
-b:非空行編號
-s:壓縮連續的空行成一行

示例一:bash

[root@centos6data]#cat -n f1
     1	1
     2	2
     3	3
     4	14
     5	
     6	adw
     7	we
     8	ads

示例二:app

[root@centos6data]#cat -A f1
1$
2$
3$
14$
$
adw$
we$
ads$

示例三:less

[root@centos6data]#cat <f1 > f2  將f1的內容新建f2並存入內容
[root@centos6data]#cat f2
1
2
3
14

adw
we
ads

tac  縱向將反向顯示文本內容:dom

[root@centos6data]#seq 1 10 >f1
[root@centos6data]#tac f1
10
9
8
7
6
5
4
3
2
1

rev 橫向將文本反向顯示:工具

[root@centos6data]#cat /etc/fstab >f1
[root@centos6data]#rev f1

#
batsf/cte/ #
9102 61:60:51 22 guA uhT no adnocana yb detaerC #
#
'ksid/ved/' rednu deniatniam era ,ecnerefer yb ,smetsyselif elbisseccA #
ofni erom rof )8(diklb ro/dna )8(tnuom ,)8(sfdnif ,)5(batsf segap nam eeS #
#
1 1        stluafed    4txe                       / a625053c83bb-2fdb-f174-f26c-07ba9a62=DIUU
2 1        stluafed    4txe                   toob/ 404f39fbf14b-cc08-97e4-083d-3edd6f1e=DIUU
2 1        stluafed    4txe                   atad/ ac9d2493fc8c-5cb9-1a64-432b-9df075f7=DIUU
0 0        stluafed    paws                    paws cafaae2f597c-f3ca-5984-7881-c9d6f5eb=DIUU
0 0        stluafed   sfpmt                mhs/ved/                   sfpmt
0 0  026=edom,5=dig  stpved                stp/ved/                  stpved
0 0        stluafed   sfsys                    sys/                   sfsys
0 0        stluafed    corp                   corp/                    corp

2、分頁查看文件內容

more: 分頁查看文件
more [OPTIONS...] FILE...
-d: 顯示翻頁及退出提示this

[root@centos6data]#cat /etc/passwd | more
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:499:499:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
--More--

less:一頁一頁地查看文件或STDIN輸出查看時有用的命令包括:
/文本 搜索 文本
n/N 跳到下一個 或 上一個匹配
less 命令是man命令使用的分頁器lua

[root@centos6data]#ls /etc/ | less
abrt
acpi
adjtime
akonadi
aliases
aliases.db
alsa
alternatives
anacrontab
anthy-conf
asound.conf
at.deny
audisp
audit
autofs.conf
autofs_ldap_auth.conf
auto.master
auto.misc
auto.net
auto.smb
avahi
bash_completion.d
bashrc
blkid
bluetooth
bonobo-activation
cas.conf

3、顯示文本前或後行內

head [OPTION]... [FILE]...(取文件的前幾行)
-c #: 指定獲取前#字節
-n #: 指定獲取前#行
-#: 指定行數spa

示例:取當前文本的前兩行內容.net

[root@centos6data]#df | head -n2
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      100660656 8786328  86754328  10% 

tail [OPTION]... [FILE]...(取文件的後幾行)

-c #: 指定獲取後#字節
-n #: 指定獲取後#行
-#:同上
-f: 跟蹤顯示文件fd新追加的內容,經常使用日誌監控
至關於 --follow=descriptor
-F: 跟蹤文件名,至關於--follow=name --retry

tailf 相似tail –f,當文件不增加時並不訪問文件

示例:查看日誌文件的後5行

[root@centos6data]#tail /var/log/messages  -n 5
Nov  8 14:21:26 centos6 pulseaudio[2688]: alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.
Nov  8 14:21:26 centos6 rtkit-daemon[2690]: Sucessfully made thread 2695 of process 2688 (/usr/bin/pulseaudio) owned by '42' RT at priority 5.
Nov  8 14:21:27 centos6 pulseaudio[2688]: alsa-source.c: ALSA woke us up to read new data from the device, but there was actually nothing to read!
Nov  8 14:21:27 centos6 pulseaudio[2688]: alsa-source.c: Most likely this is a bug in the ALSA driver 'snd_ens1371'. Please report this issue to the ALSA developers.
Nov  8 14:21:27 centos6 pulseaudio[2688]: alsa-source.c: We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.

-f和-F之間的區別:

總結:-f跟蹤的是文件描述符,而-F跟蹤的是文件名。

先驗證-f,刪除了f1就不會在跟蹤內容,就算建立了f1,也不會再跟蹤。

[root@ansibledata]#tail -f -n 2 f1  跟蹤此時的文件,在此文件中追加內容,就會顯示跟蹤效果
5
6
a

[root@ansibledata]#echo a >> f1  追加一個文件
咱們將f1刪除從新複製一個文件再起名爲f1,此時再也不跟蹤文件信息
[root@ansibledata]#rm -f f1 [root@ansibledata]#cat /etc/fstab > f1 [root@ansibledata]#tail -f -n 2 f1 5 6 a

驗證-F:當tail 加-F 參數時,跟蹤的文件若是被刪除就會顯示此文件不可訪問,若是再建立f1,-F就會繼續跟蹤,說明-F是跟蹤文件:

[root@ansibledata]#rm -rf f1
[root@ansibledata]#tail -F -n 2 f1
UUID=eb4bf5e6-2645-4b1c-bda8-12c5831b81c2 /data                   xfs     defaults        0 0
UUID=b8c37e0b-3628-40b6-ac44-c36ca09b448f swap                    swap    defaults        0 0
tail: ‘f1’ has become inaccessible: No such file or directory
[root@ansibledata]#cp /etc/inittab f1 當咱們再建立f1。 [root@ansibledata]#tail -F -n 2 f1 此時-F會繼續跟蹤文件
UUID=eb4bf5e6-2645-4b1c-bda8-12c5831b81c2 /data xfs defaults 0 0
UUID=b8c37e0b-3628-40b6-ac44-c36ca09b448f swap swap defaults 0 0
tail: ‘f1’ has become inaccessible: No such file or directory
tail: ‘f1’ has appeared; following end of new file
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target

4、文本截取工具

cut [OPTION]... [FILE]...(按列抽取文本)

-d DELIMITER: 指明分隔符,默認tab
-f FILEDS:
#: 第#個字段
#,#[,#]:離散的多個字段,例如1,3,6
#-#:連續的多個字段, 例如1-6
混合使用:1-3,7
-c 按字符切割
--output-delimiter=STRING指定輸出分隔符

示例一:

取出文本的第一列到第三列:

[root@ansibledata]#getent passwd | cut -d: -f1-3
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4
sync:x:5
shutdown:x:6
halt:x:7
mail:x:8
operator:x:11
games:x:12
ftp:x:14

示例二:

將df顯示的文本按空格壓縮,用cut以%做爲分隔符,取第5列,將磁盤利用率取出來:

[root@ansibledata]#df | tr -s " " % |cut -d% -f5
Use
5
0
0
2
0
1
17
1

示例三:

將網卡的IP地址取出來。

[root@ansibledata]#ifconfig ens33 | tr -s " " | head -n2 |tail -n1|cut -d" " -f3
192.168.34.101

paste 合併兩個文件同行號的列到一行

paste [OPTION]... [FILE]...
-d 分隔符:指定分隔符,默認用TAB
-s : 全部行合成一行顯示

示例一:

默認將f1和f2合併爲兩列

[root@ansibledata]#seq 1 10 > f1
[root@ansibledata]#echo {a..j} | tr " " "\n" > f2
[root@ansibledata]#paste f1 f2
1	a
2	b
3	c
4	d
5	e
6	f
7	g
8	h
9	i
10	j

 示例二:

 -s 用法:橫向合併

[root@ansibledata]#paste -s f1 f2
1	2	3	4	5	6	7	8	9	10
1	2	3	4	5	6	7	8	9	10

 -d用法:能夠以冒號做爲分隔符

[root@ansibledata]#paste -d: f1 f2
1:a
2:b
3:c
4:d
5:e
6:f
7:g
8:h
9:i
10:j

5、收集文本統計數據wc

wc:計數單詞總數、行總數、字節總數和字符總數
能夠對文件或STDIN中的數據運行行數 字數 字節數
經常使用選項

-l 只計數行數
-w 只計數單詞總數
-c 只計數字節總數
-m 只計數字符總數
-L 顯示文件中最長行的長度

示例一:

統計當前文本的行數

[root@ansibledata]#cat f2 | wc -l
12
[root@ansibledata]#cat /var/log/messages | wc -l
44786

示例二:

統計當前文本文件最長行的長度

[root@ansibledata]#cat /var/log/messages | wc -L
1420

示例三:

除了字母其餘的字母都轉換爲回車換行:

[root@ansibledata]#cat /etc/profile | tr -sc "a-zA-Z" "\n" |wc -l
253

6、文本排序sort

把整理過的文本顯示在STDOUT,不改變原始文件
sort [options] file(s)
經常使用選項

-r 執行反方向(由上至下)整理
-R 隨機排序
-n 執行按數字大小整理
-f 選項忽略(fold)字符串中的字符大小寫
-u 選項(獨特,unique)刪除輸出中的重複行
-t c 選項使用c作爲字段界定符
-k X 選項按照使用c字符分隔的X列來整理可以使用屢次

示例:

對文本以冒號形式對第三列進行逆序排序

[root@ansibledata]#cat /etc/passwd | sort -t: -k3 -nr
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
wang:x:1001:1001::/home/wang:/bin/bash
liu:x:1000:1000:liu:/home/liu:/bin/bash
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
gluster:x:996:993:GlusterFS daemons:/run/gluster:/sbin/nologin
saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin
unbound:x:994:989:Unbound DNS resolver:/etc/unbound:/sbin/nologin

示例:

sort -u 有去重複的字符串功能,不加-u會默認將重複的排序到一塊兒。

[root@ansibledata]#cat f1
aa
bb
cc
dd
[root@ansibledata]#cat f2
aaa
bb
cc
ddd
[root@ansibledata]#cat f1 f2 | sort -u
aa
aaa
bb
cc
dd
ddd

示例:

取出分區利用率的最大值:

[root@ansibledata]#df | tr -s " " :|cut -d: -f5|sort -nr |head -1
17%

7、uniq命令:從輸入中刪除先後相接的重複的行

uniq [OPTION]... [FILE]...

-c: 顯示每行重複出現的次數
-d: 僅顯示重複過的行
-u: 僅顯示未曾重複的行

注:連續且徹底相同方爲重複,纔會進行統計
常和sort 命令一塊兒配合使用:
sort userlist.txt | uniq -c

示例:

取出日誌文件的前十個文本內容:

[root@ansibledata]#cut -d " " -f1 /var/log/httpd/access_log|sort |uniq -c | sort -nr |head -10

示例:

取出文件中的交集,也就是兩個文件中重複的部分:

[root@ansibledata]#cat f1 
aa
bb
cc
ss
ddd
[root@ansibledata]#cat f2
aa
cc
sss
dddd
[root@ansibledata]#cat f1 f2 |sort | uniq -d
aa
cc

示例:

顯示兩個文本中不一樣的內容,也就是都沒有的內容:

[root@ansibledata]#cat f1 f2 | sort |uniq -u
bb
ddd
dddd
ss
sss

示例:

顯示文件的並集,就是將兩個文件的內容都合在一塊兒:

[root@ansibledata]#cat f1 f2 | sort -u
aa
bb
cc
ddd
dddd
ss
sss

8、比較文件diff

diff:逐行比較兩個文件之間的區別

  • diff 命令的輸出被保存在一種叫作「補丁」的文件中
  • 使用 -u 選項來輸出「統一的(unified)」diff格式文件,最適用於補丁文件

示例:

[root@ansibledata]#diff -u f1 f2
--- f1	2019-11-08 17:05:58.956592311 +0800
+++ f2	2019-11-08 17:06:09.556591856 +0800
@@ -1,4 +1,4 @@
 aa
-bb
+bbb
 ccc
-eee
+ee
[root@ansibledata]#cat f1
aa
bb
ccc
eee
[root@ansibledata]#cat f2
aa
bbb
ccc
ee

patch 複製在其它文件中進行的改變(要謹慎使用)
適用 -b 選項來自動備份改變了的文件

示例:

[root@ansibledata]#cat f1
aa
bb
ccc
eee
[root@ansibledata]#cat f2
aa
bbb
ccc
ee
[root@ansibledata]#diff -u f1 f2 > diff.log 將文件備份
[root@ansibledata]#rm -f f2  刪除f2
[root@ansibledata]#patch -b f1 diff.log 複製f1
patching file f1
[root@ansibledata]#cat f1  此時的f1是以前的f2內容
aa
bbb
ccc
ee
[root@ansibledata]#cat f1.orig  f2.orig是以前的f1內容
aa
bb
ccc
eee
相關文章
相關標籤/搜索