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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言: k1 Y# @) ~3 h/ b% u
( Q% x; w; ~" Y; L7 r
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。1 i) P6 ^9 g/ ^3 O) D
全文本显示--cat
' c. O* V% T8 ]6 p2 v/ J% E, _0 q/ T! [
cat可能是常用的一个文本查看命令了,使用方法也很简单:. T8 w3 q) q: y( x6 P/ P2 @7 m* _
cat file  #全文本显示在终端
: Q2 \- e9 l$ N3 d1 Y$ y5 x0 @cat -n file #显示全文本,并显示行号, J& q* h! b7 l' V
另外,cat也可用作合并文件:
$ \( V$ ~* u9 x0 z# s# kcat file1 file2 >file3
. b& v3 B+ m$ d该命令将file1 file2的内容合并写到file3中。; o) i) l- c, ^8 F7 H5 z
倒序显示全文本--tac  D/ R* t+ U! i" I5 f2 K) z

8 m6 u6 c0 E' ~- b- ytac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。/ Y) f! p1 {5 I# u* }/ I4 V- l
tac file/ |  U' v, _$ P: j: Z  E, E
分页显示文本--more9 _* e& P& ~3 o- j
: u% N% f) |& }1 Q! D2 H
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。: ^* c, m) m7 ]) d9 d
1.显示内容
* f* [) r! s( z2 \, e5 Z
more file8 X! @% W: \1 M; p9 O( L
之后,就可以使用按键来查看文本。常用按键如下:3 Y  y- J+ u; @4 R- s6 @/ k1 y* B+ b
回车    #向下n行,默认为1行2 s* L& G. Z- B
空格    #向下滚动一屏
. u3 X+ w" }$ l4 `  Db      #向上滚动一屏
- ^( `( U2 N4 P3 w=      #输出当前行号
: B* `& T: B. k/ u7 Q3 H3 T:f     #输出当前文件名和当前行号
$ O& l3 U9 z! X: l) w6 h9 t& Vq      #退出
) X3 c) t' v! l9 T) k( e( a7 ]% ~2.从指定行开始显示
+ j  i. o; a* Nmore +10 file
0 ]- F3 |$ j1 O; ~9 I' m" ^该命令从第10行开始显示file的内容。, r  b( E/ h4 R* D8 q
3.从匹配的字符串行开始显示
8 g8 q0 h2 e# I; O7 Cmore +/string file
( `: i% s* d1 \1 ^( d0 |该命令从有string的行的前两行开始file的内容。+ `. g, t4 h4 j  w+ t) e
任意浏览搜索文本--less% j% ^* F0 Y$ D3 f7 l" B0 a

5 @$ H2 G1 L: l5 J8 r7 u6 xless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。  Z  `6 `% P* ?% M- k; A# U
常见使用方法:
, z2 H* M/ A; h; ~, x
less file     #浏览file
$ R+ v! {% K- H' H2 K2 hless -N file  #浏览file,并且显示每行的行号
3 a4 U8 p* o4 r' G+ l& Cless -m file  #浏览file,并显示百分比( e- R# A0 E* m# E
常用按键如下:7 I7 C- S6 J/ V) s$ z+ E' L
f        #向前滚动一屏
1 V  {/ Y+ W0 Y, Pb        #向后滚动一屏: `8 s: b5 B8 E+ u4 x+ k7 K+ O2 f& r
回车或j   #向前移动一行
9 k& r1 h0 E: H% m4 B. U. |9 h% Z# sk        #向后移动一行
. ~( w( V% Z7 ^G        #移动到最后一行7 f0 o$ i( X& m7 ^  P% l* K$ D
g        #移动到第一行' M- p( Q9 h1 X! n/ h- t( N
/string  #向下搜索string,n查看下一个,N查看上一个结果2 m" Y3 y5 I; d( K8 F
string #向上搜索string,n查看下一个,N查看上一个结果/ m4 |" N6 A  o4 O- Q' B
q    #退出
5 x& c9 l+ ^5 M相比more命令,less命令能够搜索匹配需要的字符串。
4 a2 G+ V6 `8 M9 R- e( l$ V另外,less还能在多个文件间切换浏览:

  B: `) r7 `, {/ l3 ^less file1 file2 file3
- p) \; l) Q; l6 N0 i" g:n     #切换到下一个文件; q( T) R" K4 a4 T& P( V
:p     #切换到上一个文件
& C  c! C8 }1 E, w) k:x     #切换到第一个文件' L" y- V0 ^. d6 k" s
:d     #从当前列表移除文件
: X" l2 {8 R, Y# ~显示文本头部内容--head& ~3 v- X' U! e9 j/ y9 x
8 e9 t! M+ G: @
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。- @) L% {3 I4 O- ^, T6 ?5 ?
常见用法如下:
, Z; {5 s& A% V3 O( i+ o) |# `
head -n 100 file #显示file的前100* V  ^3 g& Y% }2 o5 o* v
head -n -100 file #显示file的除最后100行以外的内容。  4 l( C# i0 b, U+ d, I
显示文本尾部内容--tail) ~4 `( i% c2 j0 x; s) W
( C4 m9 Q8 q: I6 G. g' W2 j
和head命令类似,只不过tail命令用于读取文本尾部部分内容:; [7 V0 t3 d$ ?$ s1 ?
tail -100 file  #显示file最后100行内容
: @7 s8 C9 F4 q, |/ i" }/ Qtail -n +100 file  #从第100行开始显示file内容   
6 z. t  {& V7 u" w7 X: @tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:# F# _5 f: Y: ]5 q6 R# d; M$ h, l
tail -f logFile
3 c& Y  `' n: J: X; l$ M1 ~1 v对于更新的日志内容,会实时打印到终端上,方面查看实时日志。6 u3 [4 o: R, Y# |
指定顺序显示文本--sort- \4 e- B# N3 P$ n+ y* W

% K6 [$ J+ j; N- |( v9 hsort可用于对文本进行排序并显示,默认为字典升序。2 p5 u6 \5 V. |9 M) u) S5 l
例如有一段文本test.txt内容如下:

* E  O/ G5 N" J& ^7 tvim! V& y% T$ r# w
count/ |1 {8 R- X: V% z( l
fail" N0 _* K( f  W, N
help
1 Z5 o, c9 q- v7 G) _6 rhelp1 o6 x( a3 ^& a/ ~% o
dead
2 c( A" C# |* Bapple
& I1 a$ b6 B9 K1.升序显示文本2 O: p+ F. r9 `, Q! i! A
使用命令:
# S7 F; I. n; u" |6 T
sort test.txt  Y8 R- T8 c) r" V; G* }
apple
; u0 f' M5 ^; V7 P5 {3 }$ e# wcount3 t# y' j* t8 w; w$ e4 m( G
dead7 b. @* e; K& s3 \. `2 i( ?
fail
4 j1 x, d: W4 Q7 [6 P; Hhelp
+ ]; I2 I- j( G( ohelp9 S$ v4 H- p  @$ |. K7 n% N( X
vim  o7 K7 r! y9 z3 Y0 S
文本内容将以升序显示。
; I. f- Y, _$ X  a2.降序显示
0 M+ R3 b4 c6 x9 k; c/ }2 w0 K相关参数-r:
  I+ t, C& T2 q5 t( {) }7 f) f
sort -r test.txt& F  k7 [3 u% K! V6 o( R  v
vim
  J( X+ U" t# {$ U  @* X4 x( Zhelp
/ [; h' y& h. b  r+ W( N! b' bhelp
) ^3 R( b  ?( ?" A. Wfail+ D$ X1 G- f3 b; p% N4 B2 l
dead
* T! W6 g2 c/ K/ z8 e  `count1 q, \0 V. u. O% A2 K
apple
! }1 F, D" D) S( F4 j1 L  H/ t3.去掉重复的行  I+ ~! I9 T4 w; z  g
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

3 m9 b* O7 }; A/ a5 @sort -u test.txt! T# f9 @9 e& b- k& p- }4 N* f
apple
9 K+ o+ o4 r8 Z- gcount
) c3 t% ?- [/ v$ S  t  R. `9 Zdead: W; K" K1 a, W2 `) P4 ~) [
fail. J# t3 H0 T7 j/ V
help
* S: d3 V& T/ Hvim, N0 {: F; I( ?0 n" S9 @% M5 k' {$ \
可以看到help行不再重复显示。
' w) M" V* w% E& A! E- v4.按照数字排序
+ t* m) _/ e9 D; w如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
2 H/ U, g/ p  f  i2 l; ~
sort -n file
  [7 e: u4 |0 M, Y0 O! t& P由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
* y+ }" }& t7 t, Y$ r* O; j过滤显示文本--sed+ k4 H' ?) e) B4 `
1 ~& @# d9 P5 f% }# Q
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
+ d1 Q7 Y2 W' l4 s+ S1.显示匹配关键字行0 g. }3 s, k% L0 \) _. G+ A
有时候查看日志,可能只需要查看包含某些关键字的日志行:
2 w* a8 g7 O, n
sed -n "/string/p" logFile
) i' s8 S. d% ^+ w上面的命令表示打印包含string的行。( U8 a5 A4 p% F9 d7 [) J/ H
2.打印指定行
1 o! I$ T" `' osed -n "1,5p" logFile #打印第1到5行
3 L0 a( g3 ~9 b3 J6 csed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
) f3 r8 U8 E- n  z( Nsed -n "10p" logFIle  #打印第10行4 m+ B: c# ]  d) v
去重显示文本--uniq. b8 U! B1 j! ~7 s
9 M  b+ }) S: L3 r; {6 D: l3 R; L
常见用法如下:, V: ~5 \& {# l# y% |# }
uniq file  #去除重复的行9 S4 g2 n4 n0 p5 i  j6 W5 Y
uniq -c file #去除重复的行,并显示重复次数; y4 z* Z7 O2 M& S
uniq -d file #只显示重复的行
0 J+ a* H- \! ^8 \7 H0 juniq -u file #只显示出现一次的行
8 S- B( A* A. O: y! {uniq -i file #忽略大小写,去除重复的行
9 Q$ z- H3 X2 E6 T# Euniqe -w 10 file #认为前10个字符相同,即为重复0 n/ J: X4 D- R# H! ]
文本编辑查看--vi
9 A- r( M$ V" \! |9 ?) r
0 @9 o" _, N% a" w查看文件也很简单:
$ j8 Y/ w( o  x5 o3 Tvi file; ?9 m- a& ~3 t* C6 s
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。6 V6 A1 T) u; {& h% C5 ]7 Q) C
总结
. Q0 D; K& ?) T! k. D+ S! o" I8 w" x, r
文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
# t% O8 k+ ^% A) Y9 ]: H; [3 g

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-5 12:53 , Processed in 0.059011 second(s), 33 queries , Redis On.

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