无忧得胜-网上国际课程 (5edu.win)

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

Linux常用命令--文本查看篇

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
; h- _7 u3 L7 \
7 j- D2 n6 ^3 I' lLinux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。- s/ D  H7 N" w. S1 J
全文本显示--cat1 j& t8 B) T, Q; p' n
- V' l4 h6 B( k- X( A$ y4 f5 W% A
cat可能是常用的一个文本查看命令了,使用方法也很简单:- Z; h5 e* L, H# Q; \
cat file  #全文本显示在终端  S0 K4 y5 l6 a. Q+ L7 X5 W
cat -n file #显示全文本,并显示行号5 I% ]2 O) Z0 f. y! H
另外,cat也可用作合并文件:4 F: B7 u! E5 g) b' v
cat file1 file2 >file3
* F) n, {1 `" }" N$ H该命令将file1 file2的内容合并写到file3中。! t, y" {$ h( i) Q/ x  i) ]
倒序显示全文本--tac- Q( b6 e1 o; G: ]2 x2 f* X

3 X4 N3 j7 z  t. y6 Rtac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。7 ~, h9 f  Z& I% T, C: P5 Z( Q
tac file
$ ^# m4 X: G, A+ M分页显示文本--more" m/ M8 r8 ^  e. k5 e3 x
/ a4 U5 S9 k7 R' p
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
5 `: A8 n# V  z6 j1.显示内容
1 H- b) c7 w8 L$ U7 A% J! n# {: L2 p, a, R
more file; @+ Z! }0 g' }7 y2 X
之后,就可以使用按键来查看文本。常用按键如下:
* o5 I: H) O0 o0 z6 J6 q回车    #向下n行,默认为1行
, K6 J9 Y4 @) ?% X# I空格    #向下滚动一屏
5 k, j( q! D+ zb      #向上滚动一屏7 W( U7 F' f/ h8 a8 A* _" `4 ~) T' ?
=      #输出当前行号
- y! I  ^! O+ _. p( K:f     #输出当前文件名和当前行号
; X6 r; H; ~0 ]) n7 iq      #退出
0 x+ z) O$ L1 z% F2.从指定行开始显示
9 j& [, I4 ?; y) ^1 ?, Hmore +10 file* @) `. Z- a( W8 o; ~
该命令从第10行开始显示file的内容。1 I3 J, G- w0 V. V9 t" _( r) j
3.从匹配的字符串行开始显示+ e6 D$ b& J+ s0 l
more +/string file4 k3 U+ X+ X4 i1 h# Z8 w  \
该命令从有string的行的前两行开始file的内容。
+ k. f$ p* q% `4 Z3 C2 ]任意浏览搜索文本--less! u* ~" H& {' H  H

$ H9 ^) ~( z, q3 a3 rless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。
4 L" T+ i7 d% W常见使用方法:

8 s# L% D" m* w. D, kless file     #浏览file6 W; Q! c( C9 Z5 V$ w
less -N file  #浏览file,并且显示每行的行号8 v3 q/ w4 E% H  T$ f
less -m file  #浏览file,并显示百分比
. [6 ?* |# p" W* d. h% @& t常用按键如下:: f% l, i) c2 t. w
f        #向前滚动一屏2 D% G8 i0 B: k% s
b        #向后滚动一屏& c  O/ w! Z" k9 k
回车或j   #向前移动一行
: ^' T0 ]" a0 v+ Y! U, _7 i# ^k        #向后移动一行: d2 [: ^1 T+ M+ C  m2 F
G        #移动到最后一行+ m! D/ B( Q6 L; \, h  J4 @1 }7 F
g        #移动到第一行
/ n4 z3 o, P- `" m$ A/string  #向下搜索string,n查看下一个,N查看上一个结果
; y- c& ?! W4 ^# F/ wstring #向上搜索string,n查看下一个,N查看上一个结果3 y1 z; \& |) y
q    #退出
* c; m1 d- h  N7 _( b; x相比more命令,less命令能够搜索匹配需要的字符串。
, u8 V0 q3 ?- p) }. G. Q0 k% c/ \4 Q另外,less还能在多个文件间切换浏览:

. d& I, p" V1 e; P7 s- G! |8 Jless file1 file2 file3& j5 q8 I( _( l3 A4 p1 k5 O( B
:n     #切换到下一个文件
2 \* @- h( F4 j+ v3 F:p     #切换到上一个文件
' g0 K+ X5 q- L& ]% L4 o:x     #切换到第一个文件
, L8 _' c: Z7 n:d     #从当前列表移除文件1 \1 I7 d% Q! v. u& |# e
显示文本头部内容--head
( |/ g1 y' X& [" P( x; `/ K/ v, b6 c" D& m6 `( P1 I1 C
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。
4 o" T- l( C4 @; [* Y常见用法如下:

# Y, f. S+ p" b7 y1 p( I# S7 H7 vhead -n 100 file #显示file的前100- Q) X6 V- ^/ ]6 y3 O% E, e' v
head -n -100 file #显示file的除最后100行以外的内容。  , ~# c3 F% t: X( d
显示文本尾部内容--tail! \6 h6 \- i3 w8 J$ M4 d; z8 s

* Z" r+ F1 Z! h( n3 X: v2 a和head命令类似,只不过tail命令用于读取文本尾部部分内容:+ ^8 Ri o& g: k( b
tail -100 file  #显示file最后100行内容
5 M& h3 i0 E- a1 ytail -n +100 file  #从第100行开始显示file内容   6 y0 B/ K: C/ ]% \5 s! {& X# t$ \
tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:( t9 {* k. d5 Z2 i- Q
tail -f logFile
+ }; d* z7 ^1 z; K( M& n对于更新的日志内容,会实时打印到终端上,方面查看实时日志。& ]; H' `+ k( o' Q8 v$ f
指定顺序显示文本--sort3 o7 d3 g' j% y& T! Q

/ k5 m1 r/ {) g- B5 Xsort可用于对文本进行排序并显示,默认为字典升序。
, H7 sm4w I' h例如有一段文本test.txt内容如下:
$ Q3 w! ~; ]7 J" Z0 m
vim
7 m: R; [8 p' Y" D% \  Pcount
# X1 L5 v9 b% U$ ~0 ~fail8 C' p; j. P: v
help# @  E9 \* L2 V8 a
help
2 m3 G: {7 m. v1 m1 Y7 s: udead
5 }% _7 E) ?! _. Lapple3 S7 |& [; ~! ?4 T) O* M' v. F) R
1.升序显示文本* i7 V( M( T; K0 k8 p
使用命令:

+ H0 b; s/ t% g$ m. i7 X# `sort test.txt7 Y) H3 t' ~& K0 F+ w
apple% @# y/ m% \, \6 ]6 w: B% }
count
' W; s, G7 |+ Pdead
" ~% W9 r$ J( |1 X. N  mfail
, [( A( J9 f  c9 }8 shelp
( M6 c2 |9 D/ g, Z& mhelp; [% \# p% E; G& i) W
vim
$ ~& d+ t5 |/ t0 X' k3 r6 V文本内容将以升序显示。
8 H4 I6 d; D0 [; I! h9 [6 |: _2.降序显示8 ]# _6 n7 N( s+ `+ l. B( c
相关参数-r:
8 p3 R% ~4 Y/ v! ~( f
sort -r test.txt; f2 |  Y: H8 V* v2 }1 ]
vim
2 Z- ^: r" {7 P0 q1 S) khelp% [3 i; C2 I. p' x
help
8 L: s# c2 X- l  O! c4 [fail8 N) u  |: C. W2 F7 s1 q
dead
0 \1 \6 ~) S7 A. v1 X+ i, ycount
$ e; }: \* R% O0 W  q' Q( ]4 Yapple. }/ K. d3 |% x! C8 u
3.去掉重复的行) W: ~4 e  }4 n5 D5 L, k. @4 K5 v
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

$ F4 [& $ L5 N+ k; d8 ~sort -u test.txt
, e: h# C7 S* H3 |& `7 Z# H1 ]apple' C" j( {3 F1 z3 j
count
7 [; s# ~- d+ ~+ b, ?dead
5 M# `' _& w& \+ C  D8 @' X! K' cfail6 y: u# P3 l. a! ~/ m$ `) ]
help! S6 _) B0a0n"d8f;k L
vim' j: Y2 F% {( x& _1 _* p/ b4 _
可以看到help行不再重复显示。
  ?/ l' S6 k- r  Z4.按照数字排序* }3 j: {* T+ R) t' t
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

8 ^$ e9 d" w, N8 g. Vsort -n file
% \! n7 y" R6 {9 w+ o由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。" t4 R& |' J' E% |/ d6 r. _
过滤显示文本--sed8 O9 p3 D4 |3 p
7 T8 ~& C1 H, c, p' _% M5 _9 a
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。7 x. Z, v$ H& T% P2 P* I+ J3 @7 x
1.显示匹配关键字行# g- ^' m- c3 u" p
有时候查看日志,可能只需要查看包含某些关键字的日志行:

) a& P% M5 v4 c; H8 \7 F  W$ dsed -n "/string/p" logFile
" y2 ?  [) J. r5 ^% C* D2 r上面的命令表示打印包含string的行。
5 }4 _( v& L: F  P, y: A2.打印指定行
5 z1 |9 `2 W3 i, `4 m! tsed -n "1,5p" logFile #打印第1到5行' }# ]) M+ z& p# u0 D* I- j
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号+ O2 _9 S0 e& P( K- P8 ~% P0 K
sed -n "10p" logFIle  #打印第10行
" D5 E, Z* b+ O2 E: v去重显示文本--uniq: D' @$ F3 m- ~0 q1 k
$ q. i3 L+ {, X& Y
常见用法如下:
# F) z9 {1 s  V: Puniq file  #去除重复的行
) e# L- L* b/ s  Y9 \3 g& Juniq -c file #去除重复的行,并显示重复次数* t1 C& t! J& ]( I0 }; B- O
uniq -d file #只显示重复的行
5 e" ^  Y3 r/ r, C" h$ Nuniq -u file #只显示出现一次的行) H. J2 Z$ k* q9 t
uniq -i file #忽略大小写,去除重复的行+ h/ \, T( T- Z% X; a! P0 L
uniqe -w 10 file #认为前10个字符相同,即为重复) Y* u. Y5 Q8 n5 M8 v. g
文本编辑查看--vi5 s2 B  U8 R1 u5 `
% V3 d) `7 p$ F* [/ V
查看文件也很简单:5 ]! b# x9 {0 K5 M
vi file
* u8 J6 M( U+ v. x1 j; ]而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。7 Y  m7 d9 ]0 \; h8 A
总结! r4 ?. V- F) P* ?  [( Q8 w
1 `' m7 d* }" \4 R! O5 m
文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。( T, y4 E1 N- z, q, P, c- e! ], b( C4 I

微信扫一扫,分享更方便

帖子地址: 

回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浏览记录|使用帮助|切到手机版|无忧得胜-网上国际课程 (https://5edu.win)

GMT+8, 2025-3-19 05:04 , Processed in 0.063050 second(s), 33 queries , Redis On.

帖子
快速回复 返回顶部 返回列表