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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
4 I! q/ J9 c4 U/ g/ N, H$ \( U9 w( E5 ]5 T
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。" r' p! b& q9 R1 B& m
全文本显示--cat
- h- b9 M- K8 b4 B5 u8 O* z
$ G3 b7 h" I3 A- R7 Tcat可能是常用的一个文本查看命令了,使用方法也很简单:
1 G! T! H, [+ Tcat file  #全文本显示在终端- O: I8 r! ?1 v9 Y* p: r) m% ?6 H5 _
cat -n file #显示全文本,并显示行号6 k" E, L. P5 P6 w5 E  f$ G
另外,cat也可用作合并文件:  @) n  S$ u2 n! H+ E" Y* v
cat file1 file2 >file3' I* Y7 Z1 D* a3 L: ~  ^
该命令将file1 file2的内容合并写到file3中。% S, |7 u% t6 ]0 Y5 w6 J# o
倒序显示全文本--tac
3 n. L+ l8 c* R6 Z/ p" C' x9 y) t# H% m) J
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。; b1 {- N: a4 W* a8 `1 ~5 V
tac file
; T* Z, a9 ~2 Q4 T) ^分页显示文本--more' |! K+ @) R" N  Y6 A' q+ Q
0 d9 b! r* Y4 E. X
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
& y% a) c8 x: h1.显示内容

6 L: a) \/ p2 Omore file
+ Q: B3 F- k. P8 r& G4 R. m+ c之后,就可以使用按键来查看文本。常用按键如下:4 Z* w5 K1 s& j+ p
回车    #向下n行,默认为1行
6 G. V/ g$ U3 y( k空格    #向下滚动一屏
6 E, J& d( b% y, M+ k2 ]5 _& Rb      #向上滚动一屏/ L; z% S* Q; a7 z% z0 K
=      #输出当前行号
/ ?# f9 h* E+ r* E2 B8 G' |:f     #输出当前文件名和当前行号$ G1 w7 A. u* Q6 A& M5 d# y
q      #退出
5 L9 r9 d/ i" W2 ^' n# Z) S2.从指定行开始显示
; Y* G4 @+ R+ \7 g* j4 l. ~more +10 file
% F, M( R$ z- ?+ `9 _该命令从第10行开始显示file的内容。
2 P/ N! N# d' Q$ [3.从匹配的字符串行开始显示
4 T1 I) G4 t' w  Imore +/string file
3 `4 f8 C' p  |3 W; u该命令从有string的行的前两行开始file的内容。5 U  v: P$ n0 F% D
任意浏览搜索文本--less5 @8 q( q+ f0 }2 t0 v+ @6 d% v. S

: [. D, O& q# u  [less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。: v0 p1 u2 p5 W6 a) a& P
常见使用方法:
; g/ o1 q$ {8 n7 f# n4 f8 q/ V
less file     #浏览file
( r: l$ `7 H) v" Lless -N file  #浏览file,并且显示每行的行号+ H$ r, l7 @1 l, I% J8 t
less -m file  #浏览file,并显示百分比
* h7 G8 S' @; Z  q. m, R常用按键如下:
1 h* X/ \) G2 v- f, ]: h0 _3 t' if        #向前滚动一屏, J  a( Y% E. s5 T: V; E
b        #向后滚动一屏
  |3 p% x5 d2 K2 g( q" l, b2 z3 \回车或j   #向前移动一行; l" n. N! K: K) n0 y; \
k        #向后移动一行$ k5 q1 ^7 ]! j
G        #移动到最后一行
- t4 q5 G$ o- m6 e+ ]: Z' lg        #移动到第一行
' `2 P8 \. o, Z8 p/string  #向下搜索string,n查看下一个,N查看上一个结果
5 N" `" b* s& R4 u* w; Hstring #向上搜索string,n查看下一个,N查看上一个结果
# t0 P* L/ h0 u" T" J8 x7 @& q6 yq    #退出- H$ y/ U0 G7 a, ]
相比more命令,less命令能够搜索匹配需要的字符串。
5 k, q; c3 a1 N/ d) i2 I另外,less还能在多个文件间切换浏览:
* d7 C3 Q) p. b1 s' l0 L+ T
less file1 file2 file3
2 Y9 j3 f7 Z: D  p:n     #切换到下一个文件
( B8 v1 e( O+ h$ F" h5 q' n: e0 H:p     #切换到上一个文件2 b# e# a& t, D$ D+ \4 O5 K
:x     #切换到第一个文件3 O+ K2 v1 w9 `. v" N
:d     #从当前列表移除文件
1 S, @( H# p6 k0 ~6 o+ F: G% `) H; L显示文本头部内容--head
4 W2 W5 {9 O& Z7 M2 u! R- Q
" c+ s5 |" w3 J2 G% ghead命令的作用就像它的名字一样,用于显示文件的开头部分文本。7 N: R$ t! @! [6 O1 d% F
常见用法如下:
& ]; @9 L& y  c# N( i$ ^0 p
head -n 100 file #显示file的前100* d0 }. \( J) U! ]
head -n -100 file #显示file的除最后100行以外的内容。  / r+ ~# o' F, H
显示文本尾部内容--tail
% V/ o0 k2 |6 U4 o; r; A# }  B, L' _; ], a
和head命令类似,只不过tail命令用于读取文本尾部部分内容:
1 b' g- n; G, b' R! l+ Qtail -100 file  #显示file最后100行内容
+ H$ g# p  F( y+ r2 R' qtail -n +100 file  #从第100行开始显示file内容   
2 S$ w% v  \% I8 |( A( F  Ytail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
8 r" n: O+ L6 V# v' V1 a8 M. Atail -f logFile
5 b5 l! n) Z' @0 j- v6 g0 n" M对于更新的日志内容,会实时打印到终端上,方面查看实时日志。
) k0 B0 y" t7 k" O! Q指定顺序显示文本--sort
$ q6 y( z/ Q, }; ?# y  ~! C& u* w$ q) m3 q4 H3 m
sort可用于对文本进行排序并显示,默认为字典升序。
1 M9 O3 o$ z9 K; h# x) I5 O& d例如有一段文本test.txt内容如下:
8 P' N/ k$ x# V# ?3 O
vim
- s- [" v+ Z& q# o1 i  gcount
( t; I( u9 }" J- o: Dfail
; Q) j; ^5 V, n5 h/ qhelp
% ^9 u# b6 q( O. X& L' ]help
! ]1 V, F  B" q- Q" x4 v  }! n5 odead
# X) ?$ }) E1 M1 ^$ K7 X7 b4 xapple$ Z3 _$ J' h) P% L5 L+ X& d
1.升序显示文本( r6 m! ]5 |; p& A! B
使用命令:

5 E( E" q3 j: S$ Fsort test.txt$ A8 e- P1 K, f) G
apple
6 n' |4 r3 }( L  Acount# Y% v1 n- Z% M- p  ], C
dead
$ v5 ]* N& M! e% D5 R9 vfail
% g2 x  i* Z' H7 b3 f( Chelp
1 m0 j" W, D$ f( s: M& @help
6 j' E& b  V2 Uvim
8 j. W6 h0 {# I0 j% i8 _文本内容将以升序显示。  ]& j: L# c7 h; K( U% `
2.降序显示4 N* J, p! W6 U& x/ ^
相关参数-r:

8 [3 [/ `) M0 Dsort -r test.txt
' g! ]; m# }0 @  Gvim. f5 S4 f; ]2 b- B& R
help
( Q4 T- p6 H8 o/ \8 z, s. j( vhelp
7 A) X- J7 R" p* }: gfail
; ~) C- d0 \( N, [* X1 Sdead
% K, @8 b' |  p* j, ^. Ccount3 F; B1 d7 p' y0 r0 l
apple
% }' ]+ a9 \, Y: q" {4 i. u( ?3.去掉重复的行
' }. @. F; k! S我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:
$ k6 y: I0 g5 Z( d
sort -u test.txt
5 j) j' D. h# F1 xapple6 V& `7 d8 Y: O/ P' p
count: Q1 A0 A- s  _) ~
dead
$ w7 O. W2 ]8 B! q+ k8 ufail
" Y/ T8 h+ [% U6 A2 c+ Jhelp( z$ g1 O" W5 k; Y% D" D5 a0 `
vim
& X8 |3 m; M2 H+ Z- g- `可以看到help行不再重复显示。* {' ?. Q8 s* f( e  d( r6 G/ r9 r2 G
4.按照数字排序  G8 h9 ^8 p5 ]% s
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

- L8 z4 p: @: i" n, B4 xsort -n file
. ?8 L! J, B# y! }5 h由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
- T& L4 b  V- \; a过滤显示文本--sed
+ J( u" u1 E$ {$ w# o
1 e: x3 D# c7 U1 X8 X, |) g, Qsed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
3 u( k6 d% g1 t# n% @- Z# A1.显示匹配关键字行6 s4 q& Y/ O. P) I5 }9 _
有时候查看日志,可能只需要查看包含某些关键字的日志行:

5 l( {# k8 m: }sed -n "/string/p" logFile' O4 R* ?3 H/ z
上面的命令表示打印包含string的行。1 E% h4 Q5 o3 q& o/ s
2.打印指定行
2 ?8 i: z! ^4 \8 ]3 z7 [3 x7 L2 q9 ssed -n "1,5p" logFile #打印第1到5行" C) e$ c. q$ g  H+ o3 k- u
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
! e' B$ l, U1 B' s; p" ^sed -n "10p" logFIle  #打印第10行5 G3 I4 |  H5 p5 T+ W, e
去重显示文本--uniq4 K* y, H/ o+ k3 Y1 M+ S

6 M4 {1 N( I' l: {, ~' ~常见用法如下:6 v1 P# X  d* u
uniq file  #去除重复的行
: w6 a% d! j1 ouniq -c file #去除重复的行,并显示重复次数
( m8 V$ L6 q' d8 Wuniq -d file #只显示重复的行
8 h( T8 h+ O; {9 muniq -u file #只显示出现一次的行
+ c3 q, \. J& ]2 N7 R' |uniq -i file #忽略大小写,去除重复的行
- N, `9 o1 G! L, Z9 N$ G: muniqe -w 10 file #认为前10个字符相同,即为重复
! y! G0 ~/ h0 L* `! X文本编辑查看--vi0 c; g6 N& a8 k
9 D- f% A6 b- ^% ^7 Q* z6 o! y
查看文件也很简单:
0 `5 E# F' \& O+ ovi file
8 h  E, E* @& m* m7 Z; j# p而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。6 T6 m& m' |% \2 ?2 m9 B! B
总结
  @* W$ y' v1 Q# y& z0 R& J! l$ G; F& X
文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。& c+ g) j/ d/ b+ j4 w; A0 U

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-29 08:45 , Processed in 0.038699 second(s), 32 queries , Redis On.

搜索
快速回复 返回顶部 返回列表