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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言# }6 j: y" \0 V: U# x) F

9 f/ t6 j) A: e8 I, f. [Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。
# s0 n2 [9 }& U  ^全文本显示--cat
* z) Y7 T& l- o. x# P7 J, Q3 G6 S" r
cat可能是常用的一个文本查看命令了,使用方法也很简单:6 q! S! h0 I$ J. i/ X4 K
cat file  #全文本显示在终端
! F; H' U$ O/ F/ xcat -n file #显示全文本,并显示行号, r3 I# r% A8 p* [7 y
另外,cat也可用作合并文件:
- A' h5 ^, x, \$ o0 e. M- |cat file1 file2 >file3) _/ s! W% p5 L& T
该命令将file1 file2的内容合并写到file3中。
' j' v+ N; Y4 H$ Y& J9 p$ _倒序显示全文本--tac% n) v( N6 w* A# u+ t+ v

( R* F2 ?, K9 Y( D) Jtac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
0 Y! h: [2 P. gtac file
' d8 L  y! T1 ^! f6 w3 W分页显示文本--more/ x( l" u, s4 M# j3 d$ n# Q

3 M1 k! n+ |5 ~3 l, B, Vcat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
7 k$ P# h3 o3 n5 D; M1.显示内容
% H  G: Y$ t* Z* T0 K4 R/ o! C- Z2 T
more file
, ]+ Y6 @: S, d# y之后,就可以使用按键来查看文本。常用按键如下:
' U) [& B6 D& P% S% A4 T/ X回车    #向下n行,默认为1行% z( A$ D7 m# g$ g" a& Q+ l
空格    #向下滚动一屏. T6 a  I3 I% V  O7 D
b      #向上滚动一屏
2 i. W3 D, r& V9 x. y- G=      #输出当前行号
+ }. S* A# s1 m' P/ \0 }1 t:f     #输出当前文件名和当前行号
# V- A- S: A4 W( e; j" Pq      #退出
9 A5 i8 a' `, X! z- p" Y8 n2.从指定行开始显示; ]( E! J1 y: |+ K
more +10 file* y. D& S( z- D% ~
该命令从第10行开始显示file的内容。
+ J& ~' B# b. J1 T) v) b3.从匹配的字符串行开始显示
9 S+ Z8 h+ v* x$ pmore +/string file/ {3 ]% u8 W1 y" p
该命令从有string的行的前两行开始file的内容。
; F% K. T, c+ J7 W/ p1 Z任意浏览搜索文本--less7 X: |/ F1 t9 o: C: X$ z3 u" Z7 C

  y! }& h! J% T" w( X% m( Xless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。- L% _# O( ~8 V, I* h# {7 c( k
常见使用方法:
0 X% ^1 x: m) b0 Y6 }
less file     #浏览file1 Q  V8 ^1 z8 V
less -N file  #浏览file,并且显示每行的行号+ m8 @) X) H  b+ f5 [8 i* O
less -m file  #浏览file,并显示百分比
1 ?5 J' t9 r/ w6 Z8 M3 y常用按键如下:
3 n9 j& q4 J! c$ T; a/ A. rf        #向前滚动一屏5 C! |0 C7 x; H4 B& n
b        #向后滚动一屏' G: c! y2 c$ ]
回车或j   #向前移动一行& D/ ?9 p3 A1 C; ]4 G
k        #向后移动一行
2 L  U9 A, ]! f! J; eG        #移动到最后一行' \  d' O: c8 p" E$ C
g        #移动到第一行
2 w8 }3 b! p1 i& {" n/string  #向下搜索string,n查看下一个,N查看上一个结果$ i) v- u9 H( ~: e1 ]+ k$ A& }3 D
string #向上搜索string,n查看下一个,N查看上一个结果
- X" [% U, k, q3 s% O7 Dq    #退出
$ \4 Q2 t, b1 ?/ ]( U9 _' T; {* @相比more命令,less命令能够搜索匹配需要的字符串。
8 R& U# I4 c8 K, @2 U4 w另外,less还能在多个文件间切换浏览:

, K' i' U. K; I* U* `$ ^( }0 Yless file1 file2 file3
, l. P& q9 i. J- ~:n     #切换到下一个文件) f/ n- d5 e4 t7 T9 l& P. I& |
:p     #切换到上一个文件
- E9 F' Z/ N$ ]/ j, Z:x     #切换到第一个文件4 C! O7 P  c& s0 {5 R6 P" z
:d     #从当前列表移除文件
; n1 F- S3 U2 v# ]- J显示文本头部内容--head9 M. C$ u) J, [1 C6 \' B7 D6 \
) L; C" y+ ?# ~' _
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。( j' a# E; r  n  R. l7 y. [
常见用法如下:

( F' \# E& ^) S! Thead -n 100 file #显示file的前100
1 j1 o1 `$ h- Q; V  Y7 v! y2 Ahead -n -100 file #显示file的除最后100行以外的内容。  7 f2 {+ n1 f) C
显示文本尾部内容--tail
9 X  f. Z. a. h9 L; a, |$ p0 m: H4 W/ [7 U+ W2 Z
和head命令类似,只不过tail命令用于读取文本尾部部分内容:
0 a2 U! N/ f- P/ b3 ctail -100 file  #显示file最后100行内容5 D; k$ O" b' {% \) n, o) A6 Q
tail -n +100 file  #从第100行开始显示file内容   
) Z/ z' O! P9 etail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
5 `5 d6 @2 z1 J4 Qtail -f logFile
6 Q. }7 ?" b0 \0 ?1 p+ E5 b对于更新的日志内容,会实时打印到终端上,方面查看实时日志。9 G8 f) C- \$ l5 v% Q$ W* j# x
指定顺序显示文本--sort4 e0 L: q1 ^8 v8 u" ~
2 Y! u, P7 q/ v  c; H! B8 B
sort可用于对文本进行排序并显示,默认为字典升序。
+ j2 s- Y0 m% p/ ]) q1 \; Z) Z5 `例如有一段文本test.txt内容如下:

1 \% _6 T2 W# O- Uvim
$ ]1 z, Y  e6 P# u7 t$ d! ucount
0 I; `. T- l! _$ h$ _, L$ Tfail
, r) R! ]; v1 _2 H  B! ohelp5 f9 B# Y; \6 B& M! C6 b
help4 J1 Z) q- ~# }9 r9 [$ [0 D
dead1 H9 W1 N- R3 S
apple. ]/ F4 F3 [0 m
1.升序显示文本  d) m; O) V4 F8 j$ `
使用命令:

- D* v% y1 X: ?5 N  Tsort test.txt/ q" Q* a4 o, V6 M% ?6 K. ~
apple0 ^' K/ y; I) L* Y; H, {
count4 O- a' X& O" @# s) M' o" B/ ^
dead9 d: ]) @+ {5 |( _+ `
fail. Q  P! n. h  B! d- S
help
, m/ a" o, i* O0 q9 hhelp6 O' k, D% m; k3 a' F& \; Z
vim
  b! K8 G/ f, n! i, b文本内容将以升序显示。1 \. F- I# ^/ [- D: K% r+ F
2.降序显示
; T2 i8 f1 T5 {% l相关参数-r:
: ]$ N$ J7 T( z3 N
sort -r test.txt, p& I" J4 G$ a! [( x0 c. _$ v
vim
2 K1 h, i! \. o4 Shelp
% s) R3 k. h$ Thelp4 r: ?; e( p* b+ B8 F# C
fail' M2 _4 k7 b) g3 q& @. g
dead
/ m. _8 ?' u' f; i6 Jcount+ h& N' J* r6 J# |( B$ w
apple2 z/ M6 a' I4 H; i
3.去掉重复的行4 Q  k: A- O2 i, `  h9 c  _
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

& z4 I5 L; \2 W$ usort -u test.txt
/ ]' u' \  A7 y, Napple
& G6 \0 N  G' Z# ~0 B0 m  ecount
5 h% B7 l# E4 I- Q: Q/ D! Pdead
# I8 z' o) k/ j# ^2 R# ffail
8 c) }  h1 T! u; T  q1 ~& uhelp4 S9 w0 Z* N1 m3 Q; _7 c  h( n
vim
9 ~; P0 b  }* Z- Q: b可以看到help行不再重复显示。2 {' G. f2 E/ \% |. t
4.按照数字排序  |) l- P- V  v1 K
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
8 H7 G2 Z1 l+ Y% U- W$ W/ d* b
sort -n file
3 r4 x5 `1 B3 i: i由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
7 Z/ b+ s" G9 B6 a* D& _过滤显示文本--sed, Q  F7 L% H/ O( E4 ?8 t" D* v- H+ w
( G' S( B4 `% h0 |
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
1 Y/ G8 g1 A& C  O" \  J% r1.显示匹配关键字行9 V& D9 }% C" ]! w7 r
有时候查看日志,可能只需要查看包含某些关键字的日志行:
- Z9 L: ~1 s, g  h& e+ \, J5 V, }
sed -n "/string/p" logFile
) F% |( _0 E4 f  O上面的命令表示打印包含string的行。
0 L5 E( f* J. v. Q- T2.打印指定行
9 B/ U4 Z$ Q, A8 o- Fsed -n "1,5p" logFile #打印第1到5行
' T7 i" v( c! T/ B7 tsed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号+ J/ E1 S# D2 z) G1 q8 \5 L9 ~
sed -n "10p" logFIle  #打印第10行8 a5 t- Q- v/ x! K3 s! z
去重显示文本--uniq
) R$ v9 P7 u: w# s. {
. t; _7 F2 `2 V% X6 m常见用法如下:$ L/ Q/ [: b. a0 ]- j0 I
uniq file  #去除重复的行4 A9 t& c  H1 n7 B
uniq -c file #去除重复的行,并显示重复次数- C  c9 b/ k  _9 S* I5 G9 i
uniq -d file #只显示重复的行
; E6 Y" |, ]" x' S+ i! o8 a7 m# Ouniq -u file #只显示出现一次的行1 R# u7 m# O8 w( {/ y( v( m
uniq -i file #忽略大小写,去除重复的行
, A3 n0 `( R9 m0 ^uniqe -w 10 file #认为前10个字符相同,即为重复8 w8 H- l( U) y5 h, j3 g1 r
文本编辑查看--vi8 G* a2 C1 i$ b4 U

& ~; y, Z+ _/ [: Y+ c' U, A' K查看文件也很简单:) y1 F- C/ v( b2 P" T
vi file) i  o$ u/ q3 X
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。) W$ E4 L9 h. w; k! I
总结
, c' H! A0 H: g1 O+ }- {0 h' F3 g+ e1 u! n
文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。8 I8 h9 p' R, g

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-7 16:10 , Processed in 0.059264 second(s), 32 queries , Redis On.

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