51fly国际课程 (51fly.win)

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
5 f5 t4 u% t  j; M. w' b2 |+ o% [5 L. C6 [! U, G9 |) t
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。
8 v/ Q8 G5 l" l3 y& q9 q全文本显示--cat9 k4 o! u# y3 w) e' {) c( Y
* d) n$ o6 l4 f: Q1 m
cat可能是常用的一个文本查看命令了,使用方法也很简单:) ]: l: s# a1 G% P- M& P
cat file  #全文本显示在终端  E3 C( H; p4 C8 z, E' \# U, i
cat -n file #显示全文本,并显示行号
2 t  _$ w3 V& N) \- D% f2 G3 k另外,cat也可用作合并文件:4 {+ A- q4 d% u- R' O) l
cat file1 file2 >file3
+ ]+ V7 K3 @* \5 F7 x3 q- u该命令将file1 file2的内容合并写到file3中。0 r  q: {' u& J. P; a& J
倒序显示全文本--tac9 l/ [/ ~5 Q/ z) `

$ V9 ]& u4 u/ o6 Q9 u4 ctac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
, W1 H" d& l! O6 @$ B: L. U8 Htac file
- S, l  D) a; z" ~分页显示文本--more
4 P2 ?* W: _6 Y8 ~
. z6 E1 Z/ k2 {9 R* X! f* kcat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。$ e4 w( n0 d! z5 K/ F4 K8 w+ }
1.显示内容
8 H, d1 ^  I& Q8 q3 V
more file
1 K* t9 o" c/ [3 u- ]1 c- J之后,就可以使用按键来查看文本。常用按键如下:
" n8 J- ]3 Y* {+ p! Q7 \回车    #向下n行,默认为1行; K1 M: Q% [6 f# g  e7 y: [
空格    #向下滚动一屏
7 J- A9 p6 U; i: l% m. H5 J! ?b      #向上滚动一屏
. @; a+ Z9 O& |  Y=      #输出当前行号+ ~# e5 N3 Q9 O8 M! G
:f     #输出当前文件名和当前行号$ a' s+ B9 K% V$ b
q      #退出- I# @! C; H  S7 z
2.从指定行开始显示
1 c/ R+ o% w: Cmore +10 file
. \% ]  U! r+ |( i, Y& s2 x该命令从第10行开始显示file的内容。
) X  l* `; J  L# H" D: {8 z3.从匹配的字符串行开始显示% S1 j- g/ O6 q' @5 u$ e$ N
more +/string file4 ?' C% F% B9 n& b# c* d6 n
该命令从有string的行的前两行开始file的内容。
2 C8 W9 C+ R* b  N" j/ W$ K, F任意浏览搜索文本--less/ I  t7 D! s. _$ t7 p8 P
' F+ k" h: A( |0 w9 G" ?4 A
less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。
" d& U5 S/ u8 N常见使用方法:
# c' i: Q( s  E6 }
less file     #浏览file
" A0 t8 r  d3 h5 h( Pless -N file  #浏览file,并且显示每行的行号& u  B- a4 N. I& _- [
less -m file  #浏览file,并显示百分比0 }4 j% s0 O( R1 Y& r3 e# p
常用按键如下:
2 U9 d* r$ W! N5 R6 \: W  b9 F; Ef        #向前滚动一屏
5 d. y: {" V6 H; Q0 ~: e% Sb        #向后滚动一屏$ Z( r; U. E3 Z; V4 T
回车或j   #向前移动一行
9 \( \- @# Q( Q6 D; ]6 rk        #向后移动一行
& f8 p7 Y3 k, I1 h5 TG        #移动到最后一行
: [$ z, z0 k1 \9 h% ?: N) i$ z$ pg        #移动到第一行( q8 A6 W6 {# M* B9 h- K# w
/string  #向下搜索string,n查看下一个,N查看上一个结果
+ ]* g% ^+ P, F4 @8 \string #向上搜索string,n查看下一个,N查看上一个结果2 I) e+ f9 I& r
q    #退出' d0 l, p- [+ F8 a+ a* @2 t
相比more命令,less命令能够搜索匹配需要的字符串。: y  _1 i. R8 _$ D0 Y2 U
另外,less还能在多个文件间切换浏览:

; v* [% h4 C2 m3 @less file1 file2 file3
+ L, w0 c* f5 {& j! v1 a  r:n     #切换到下一个文件( r" E  t: \0 S. C7 C; r
:p     #切换到上一个文件6 X4 ?' C3 m/ J6 p+ T; b
:x     #切换到第一个文件
, {, d0 V4 }3 L7 \& E5 F:d     #从当前列表移除文件! [* ?) Q# ?9 A# T- h1 l" m' I* T1 s8 Q. k
显示文本头部内容--head. P* u. ]$ c$ o. w4 p7 U
) x$ B1 i! Y0 o- E- `
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。) z' _- N) \  c; b4 C" @1 c
常见用法如下:
1 r4 c; y+ e- t% M& d% G" v5 i
head -n 100 file #显示file的前100
. i5 @0 o9 P( h7 rhead -n -100 file #显示file的除最后100行以外的内容。  
  H/ i! T- C, ~. T4 C$ g; w8 d显示文本尾部内容--tail& v* A& N8 r7 M, G# V* C5 U6 l
$ P' ~: {3 g/ ]' g$ V. S- p* D
和head命令类似,只不过tail命令用于读取文本尾部部分内容:
1 c4 l% `4 U5 n: _( Ztail -100 file  #显示file最后100行内容9 z5 N" i+ C% Z! X
tail -n +100 file  #从第100行开始显示file内容   
& h( Z  Q; L9 J  ^" utail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
9 `* a- D9 g' Q2 etail -f logFile
& f9 c% ^& [2 C对于更新的日志内容,会实时打印到终端上,方面查看实时日志。
" a' O. Z; m8 e' U6 g指定顺序显示文本--sort
) B0 Y) B4 m+ v; K8 N0 Y3 c7 r* y, I4 O1 J# j6 {0 J
sort可用于对文本进行排序并显示,默认为字典升序。
7 T/ l. b5 f6 X2 m例如有一段文本test.txt内容如下:

5 m  E5 b2 e5 x, X& ~0 [- Ivim
7 Q! n  ?) w( P8 z, [count
2 }% d, q5 O- `: T! T% \7 Lfail
- [. j2 m8 J2 e9 {. f+ J! Ihelp
- C7 I  ]) J, ~9 |1 i% S! j* ehelp
, K* a" c' e" ]  G+ G. _dead& c4 ]; O% S1 `/ S$ m5 @( }
apple
: [& r- h. x7 e" r* l) H1.升序显示文本
" g% ^6 k6 I" ?2 V使用命令:

+ m1 L/ U9 k) P5 I- l* V: n3 Esort test.txt
/ k7 u( D# p3 M9 d1 Capple5 [  D: Z6 s: M, _. Z9 ]
count1 C! N  @# J8 s3 V
dead, x- b2 t) B/ T+ J4 n" ~0 ?% C) F
fail
& u- ?" |) S: l" _" t3 ?help$ q+ \7 o: G$ f% f
help7 q* b& E% n( E8 U& A+ p
vim, \$ G& v/ s9 N
文本内容将以升序显示。0 ]# D& d$ t% g, ~4 U
2.降序显示# R/ F* O5 K  \  u, S
相关参数-r:

7 ~" H  I2 k  b' Ksort -r test.txt1 \& O8 [+ D; M7 w0 N: Q% L8 A
vim7 }4 z! J3 n7 L/ y6 }& A$ c
help
6 f& N+ d- h4 Z) ]8 a0 {' Q+ ghelp5 y( }+ [" ?) \' q% o4 m
fail1 C! @$ E" `% u5 L) h7 _( Q
dead
& [" L; `6 I2 W% u0 ?( R9 \count
6 x- G6 o4 s0 o0 Bapple
  V9 H8 y4 {1 S, x% B3.去掉重复的行7 ?8 e8 n# W( @1 D% d
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:
  a4 `. |( Q* t: @6 j
sort -u test.txt! L3 z& |) E$ `* C
apple. b* w$ B! v* A3 R: j% {% K
count
7 H% [! |' U6 @. ~dead! k  a$ n. D8 w
fail
, h0 w8 L0 L7 n2 U; w! ^help
" r2 ^$ J' D3 R  J, @* avim
' I/ U! o# V; L可以看到help行不再重复显示。
$ X3 _8 {9 C' k3 w4.按照数字排序
: O, S) d, i7 S, b如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
2 \" H1 K& q! X4 }0 b& ?# n" k
sort -n file+ E- C% i3 Y4 L7 ^3 |8 @3 Q. c" |# V5 F
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
5 ]1 t2 h& H6 h# H" V过滤显示文本--sed' y3 o, I  h& g% ^5 D9 i; h8 d% g/ W  P

2 q2 }. f0 N% M2 msed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。; \0 ]% f- ]5 o, R
1.显示匹配关键字行0 i8 j( A. P4 B( O3 k% y# P$ u
有时候查看日志,可能只需要查看包含某些关键字的日志行:
% w. r; L+ E& {& F+ I! q( f
sed -n "/string/p" logFile
4 Y2 R; P: v. t* D1 A上面的命令表示打印包含string的行。, R# M9 \8 n5 h4 f
2.打印指定行9 I; k  B7 P2 v& H' k; i& y
sed -n "1,5p" logFile #打印第1到5行( }. ~/ s* g  k" l6 k( W
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号2 {; F5 x6 r( @1 Q/ l
sed -n "10p" logFIle  #打印第10行" y* q- r% ]8 }
去重显示文本--uniq
) a  Y$ W7 j  q
2 E1 @2 C! N& N- C: T常见用法如下:9 I5 E  z# Y. t1 R. Z
uniq file  #去除重复的行
2 }  ^; z* @# ?& Suniq -c file #去除重复的行,并显示重复次数
. s# t" v0 L% M: ]uniq -d file #只显示重复的行% \, x8 j. s. B& V
uniq -u file #只显示出现一次的行! P8 l8 W( m  d5 m
uniq -i file #忽略大小写,去除重复的行1 f% y2 A8 ]- M$ L9 P0 d: O4 q4 J8 `9 A
uniqe -w 10 file #认为前10个字符相同,即为重复" m  i8 c" D. m- @% s" S
文本编辑查看--vi5 k: C; I" T9 f: E& T
; i' M- ]- J3 z( H; s
查看文件也很简单:$ `8 Y* g# v2 ?- a0 r: g
vi file: L3 u4 K2 O' K/ ^8 Z
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。; e  s: }2 H  ^4 u, u
总结1 V' M* J' F, Z; O: M/ E% S0 f

% M& k9 e# h2 B+ l文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
& }2 p* I  C( G& c4 f# Y" \5 g( m

微信扫一扫,分享更方便

回复

使用道具 举报

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

本版积分规则

浏览记录|使用帮助|手机版|51fly国际课程 (https://51fly.win)

GMT+8, 2025-5-7 23:40 , Processed in 0.064369 second(s), 45 queries , Redis On.

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