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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
) D; R, t( J- L8 u# G% ?2 \: R2 {' r* |
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。1 K+ i4 R1 Z. y' D3 K/ j/ h2 p# w
全文本显示--cat- J8 L8 H4 v; F- m

( ?' S1 K  D1 W( n! ycat可能是常用的一个文本查看命令了,使用方法也很简单:) X* a! c5 t( Z$ N6 S
cat file  #全文本显示在终端
5 k( `) i# y# J! e. `' H3 L- k  jcat -n file #显示全文本,并显示行号
' {3 D" ~& Z% [另外,cat也可用作合并文件:
; W4 D2 i5 z7 D* @* vcat file1 file2 >file3: ~* ?( D& v$ K) |9 S3 h, C9 T
该命令将file1 file2的内容合并写到file3中。
4 C+ H  V6 g& u3 c% {1 l倒序显示全文本--tac- J8 V+ T! h$ K$ Y# R, z

/ B6 W( C3 w$ ~% u6 Btac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
' Z4 T% X+ ~- V+ I1 Q8 Xtac file
- R+ ~$ D- e1 x1 G( J分页显示文本--more
# _  I. j( X; F( S5 }& Q3 ^% K' w7 K& j
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
7 n( J7 ^( s. P  u' ?. q4 t) k, h- ?1.显示内容

+ v6 j& i# }; V/ f% {1 }more file; A0 U8 N9 x5 N* k6 C9 o
之后,就可以使用按键来查看文本。常用按键如下:
+ ?7 [* D+ @6 L2 S  D, o回车    #向下n行,默认为1行
. e, D1 u" \# a空格    #向下滚动一屏8 o6 D" H! L$ l% N; c7 j1 p+ q! v
b      #向上滚动一屏
+ D" w+ h% S9 Z9 c=      #输出当前行号0 u" k$ b5 x0 a5 S0 ^1 M
:f     #输出当前文件名和当前行号* j9 c7 f9 x- C4 u$ s4 y. X" `
q      #退出
' V7 l% E7 A: p, {6 Z  S2.从指定行开始显示( {5 D! C/ C: p% P4 Q
more +10 file
7 B3 F4 A4 E6 j3 F1 r该命令从第10行开始显示file的内容。
2 V9 E. P. c7 X( I9 M$ m- ]8 N1 H3.从匹配的字符串行开始显示/ @- I8 @0 _3 b- j# J
more +/string file2 ]5 `1 Y: S2 z" Q& p+ [* R2 d6 G
该命令从有string的行的前两行开始file的内容。
* T4 [; y1 N* j4 u6 \( g任意浏览搜索文本--less
* c; @; I- C- u6 R8 I: u* n
' N9 r  u: Z/ }less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。  `: I+ Q" Z7 t- _5 b( z' a" ]' ~
常见使用方法:
. o9 c. T. a  I7 L! f# Q1 e
less file     #浏览file' `% V, R; Z" U& j$ Z$ Z
less -N file  #浏览file,并且显示每行的行号8 O- F5 I0 p& m! C2 F
less -m file  #浏览file,并显示百分比
' m  L( p* N# G2 s0 R: F, G常用按键如下:2 I. t. e3 c' f3 U
f        #向前滚动一屏
" d4 e" N' r* X# }b        #向后滚动一屏# w  R) u4 n3 f. @) O8 a/ D
回车或j   #向前移动一行" T9 M4 }7 M( W0 n
k        #向后移动一行' o4 Q( i/ N' n0 C& k* J/ z
G        #移动到最后一行
; Y  U, b5 F- }$ m; E7 X$ hg        #移动到第一行- N; y* {8 ~$ w
/string  #向下搜索string,n查看下一个,N查看上一个结果; w- U( e. K7 M
string #向上搜索string,n查看下一个,N查看上一个结果# D+ K) |+ I! i' U7 y* Q' |: F2 J7 `$ K
q    #退出  b+ R% V+ j5 g; Y! K' @8 M
相比more命令,less命令能够搜索匹配需要的字符串。+ f$ \% p7 D5 S$ C6 [9 @/ l" ], |+ ]
另外,less还能在多个文件间切换浏览:

# ?; p8 {% e; O+ n$ c3 \. Uless file1 file2 file3  m2 i  ]& F  Q* s9 T% Q4 A
:n     #切换到下一个文件
, H2 s% z! N6 F+ E:p     #切换到上一个文件
+ a- H4 E) W/ Z3 t. ?6 [. Z+ A:x     #切换到第一个文件
( M" Y$ u3 m% E; a/ b* g:d     #从当前列表移除文件; U0 L1 K( `& n4 A) e; Q
显示文本头部内容--head5 B  N4 M, U9 h9 E
% C/ q) V& j" |  [( ]
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。
. H8 `/ M3 t. h5 L$ b7 t常见用法如下:
  z$ y4 @$ q* e' q  v
head -n 100 file #显示file的前100
2 L" l9 d2 v* b, chead -n -100 file #显示file的除最后100行以外的内容。  
" y+ Q( h4 n, G2 Z显示文本尾部内容--tail
/ o% K! ~6 W: h- U; L7 @# }# u& @. S
: X4 d& S# {7 m4 V7 {; z: W; ^和head命令类似,只不过tail命令用于读取文本尾部部分内容:. \8 v7 C$ _& u0 K& n+ E' l
tail -100 file  #显示file最后100行内容! w4 W# b6 G$ T' f
tail -n +100 file  #从第100行开始显示file内容   
$ O: k' A4 O) p7 r. d2 Qtail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
# p4 O. f( |( b8 Qtail -f logFile
! j: a7 C9 I& y对于更新的日志内容,会实时打印到终端上,方面查看实时日志。) y( l0 B5 I/ }
指定顺序显示文本--sort
" f5 X% u9 Z  m2 F7 y) ^2 W3 O( n3 L! Y4 v# Z
sort可用于对文本进行排序并显示,默认为字典升序。
" n! `! k; O, s8 ~例如有一段文本test.txt内容如下:

2 u: t( `/ U, T5 y) qvim8 E+ D: V8 v8 ?. I
count
- P7 ]/ Z7 q5 b- f) ~fail
, d+ _- Y  Y$ Q# `$ v/ J; Hhelp5 u9 d7 U( A- [' X
help
$ }1 Y9 \) I4 s- A' cdead* F6 |4 p" }1 n+ I8 x& x0 x7 _5 V
apple$ l* Q0 `# p! O5 j
1.升序显示文本7 T  c5 m3 E- B
使用命令:
( G6 ~9 Q; x/ o( S( k8 K9 K
sort test.txt
0 C0 }6 G1 h" l" B* L( l0 Yapple
' `5 |6 d8 ?' x; W; s9 ^count
% E- A9 V% v, m0 z3 t) A' Ldead
, a6 r/ F% a: I  @fail
" H' A+ a0 \; ?5 R" b; Uhelp* o* e  E6 o8 e2 S
help& ~' r( Q0 S( ]3 n1 k
vim1 l: e! X+ D$ X# N8 y5 ?
文本内容将以升序显示。% H* F7 R. z$ V4 m( U5 s. ?
2.降序显示
0 z  c, I- V9 T相关参数-r:
9 O* i% i' R! N
sort -r test.txt' p$ W) c  L% |; C+ l
vim$ X! g2 ]5 ^  X% V! |
help
$ K( N. ~8 y5 khelp6 G9 m6 ?: j% i9 Y, K6 G1 g* L
fail/ s% L* F$ X& h2 N
dead
: C7 U+ P3 o8 j" S: ncount  G4 }! |1 v/ R; ~! C% k! e
apple# X3 d  {+ E- F, r1 ^! e: [+ e
3.去掉重复的行
& u5 Q+ ]3 t  x* C0 y8 Q3 e" n' D我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

1 b0 B. T  m; p6 qsort -u test.txt/ \5 J$ z: j/ x3 v3 a/ G
apple
  \2 M+ N5 w# }; ]7 ]count0 e, f' @: H, g) w
dead
. ?7 L' J' L% p2 p0 i7 [  Rfail! R; H5 s' o* {$ d
help
/ e  h4 @" ?8 W. n" A- qvim
3 W- {  ~! ?) o; X' E  j# H& u可以看到help行不再重复显示。
, ]! I" M( x# W9 q* B0 G1 g# B) j4.按照数字排序
5 }, V7 Y8 a/ l% K- o6 w" l如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
7 s8 r1 R- z" A$ |3 \
sort -n file
+ K; {+ }: z* D% T由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
) {' `2 b3 O" K* }/ o* f过滤显示文本--sed
  Z6 F; Y8 T" S+ o7 {+ u& y
" b/ F+ B3 E" z& ]7 M- U( _8 msed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。' V. m6 W# ^# n( p- u
1.显示匹配关键字行; n, v1 V# \, y
有时候查看日志,可能只需要查看包含某些关键字的日志行:

7 F. K" D/ d& a; D( Bsed -n "/string/p" logFile
2 @' g# S6 i& G上面的命令表示打印包含string的行。
$ j2 I) Z3 F: y2.打印指定行
( @0 _$ G$ h8 m1 {% V6 ssed -n "1,5p" logFile #打印第1到5行5 {: Q+ F% `' Z- \. I2 o/ W
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号8 \0 H# ]% g# y
sed -n "10p" logFIle  #打印第10行3 F8 l3 z; ^& ]8 t" Q' ]* }
去重显示文本--uniq: E+ m2 T& p$ i7 }: V5 g! |
9 j" c4 @* h1 I
常见用法如下:
6 H/ y, N: m% f: ?" ?# L) h; Euniq file  #去除重复的行
2 v/ V2 g% U( {* W: d9 Quniq -c file #去除重复的行,并显示重复次数8 J+ p  n1 d+ Y! H* S7 I' f
uniq -d file #只显示重复的行. B; ]5 M; R: z. k" Y1 G
uniq -u file #只显示出现一次的行  o$ h) a' X6 E! u3 ~4 u8 c
uniq -i file #忽略大小写,去除重复的行- ]2 ~8 a- o  `( @+ D8 N) b/ m
uniqe -w 10 file #认为前10个字符相同,即为重复3 X" J  u1 e: A3 D9 Q
文本编辑查看--vi
4 w$ F* F+ ]$ p- B' I! d9 ~1 _0 R& c" [. e
查看文件也很简单:
  P- y& r! Y- U* n& jvi file
, G& X7 n& f6 R, h; S! g而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。5 n3 E- r4 L3 {
总结6 z& w% i) P3 {! J$ I

  P  I1 q! s+ }/ i2 g文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。7 x1 |( w/ y0 |

微信扫一扫,分享更方便

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 07:00 , Processed in 0.049876 second(s), 32 queries , Redis On.

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