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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
; j1 g; g" |) k6 v& f7 G3 D  W! f2 d; m0 t/ {# a
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。& v! s: e4 d( K0 n; U
全文本显示--cat, l# c( {: @4 t/ `$ {) t" a) |
6 t5 b/ `0 O  h7 X/ O3 u; Z( G* `
cat可能是常用的一个文本查看命令了,使用方法也很简单:# w/ g- g9 i1 D
cat file  #全文本显示在终端6 h1 A7 t5 ~& w* r! i0 E
cat -n file #显示全文本,并显示行号$ G6 N6 W( b/ I( E% D4 r- V
另外,cat也可用作合并文件:  n) e7 o; ]. G* J2 m. Z
cat file1 file2 >file3  X9 Z% k9 s1 N" c( `6 M4 R/ [
该命令将file1 file2的内容合并写到file3中。
7 p, ]+ S9 e) L) Q& c倒序显示全文本--tac
- O6 M: i) Q# w8 C6 ^8 [! R2 E% u. ]0 I% c
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。: |6 i( o  n: l8 b/ L) B( h
tac file
/ D) S  j8 w" b( {3 X- X) k  j分页显示文本--more
8 C& q& Z- `- S- F, N2 P; O  V# j( F  |* U8 l
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
6 X  u* _3 U0 ^; G# X( N* Z1.显示内容

1 T6 p9 t& ?. ?3 h( H6 {more file6 ~3 s2 a- E# |7 B. B' _+ k' ~
之后,就可以使用按键来查看文本。常用按键如下:( l  I6 ?3 j/ T+ s7 K' E
回车    #向下n行,默认为1行
7 u- h) V) i$ H; f' k& O" r空格    #向下滚动一屏4 g& t4 b( p# f+ j- T6 _, z/ o
b      #向上滚动一屏
) r* N/ C" H; B, n- `=      #输出当前行号6 \# n* f1 i8 v! [7 N
:f     #输出当前文件名和当前行号. I0 L! [4 E$ U
q      #退出
- t6 p" D0 e, e+ }4 Q* O* v9 g2.从指定行开始显示
' }7 j9 v+ p5 g6 i5 ^/ mmore +10 file
  q8 ^6 d  z  U7 F2 x该命令从第10行开始显示file的内容。
$ a0 J$ I% w8 I3.从匹配的字符串行开始显示
* q8 l0 W* f! Emore +/string file  `+ l0 B+ P- R
该命令从有string的行的前两行开始file的内容。: G3 ?  s* i6 I5 ]' u& c9 O
任意浏览搜索文本--less
* o4 h0 A  T3 P: C1 L) n/ e7 S* t
. u" t0 v. s! T* `* wless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。( w( ~8 g4 O9 m5 K
常见使用方法:

2 k) D- U, @; |- I# Xless file     #浏览file  h. x: U/ j# C* C3 ~
less -N file  #浏览file,并且显示每行的行号$ c! a0 [$ d  R5 x1 e; i! g
less -m file  #浏览file,并显示百分比9 y! v; n9 C4 i" f
常用按键如下:% U" e& v6 h( M/ Z' z) l8 K
f        #向前滚动一屏0 c) j1 b+ |2 X3 w
b        #向后滚动一屏
+ P8 U4 Q9 y, d$ G- `! }* A) b回车或j   #向前移动一行
1 X6 n5 R* K- ?/ P+ f7 nk        #向后移动一行# o( l3 {) `: ]; E
G        #移动到最后一行
1 J# o/ k& T' Ng        #移动到第一行
* [: ?$ N, ?6 f# v+ C/string  #向下搜索string,n查看下一个,N查看上一个结果
5 F! x  k& Z' s) o( _string #向上搜索string,n查看下一个,N查看上一个结果+ V/ H7 u% r0 s/ p8 p! G
q    #退出; K- V" E9 K: o$ k
相比more命令,less命令能够搜索匹配需要的字符串。
' C( E1 _0 ^7 p( ^& ]# `4 |+ b3 p另外,less还能在多个文件间切换浏览:

9 Z# u8 ]2 V2 ~: W; cless file1 file2 file31 |. U6 Q' {) |* w& t
:n     #切换到下一个文件
, {3 ]' Z, [5 Z% X8 F:p     #切换到上一个文件6 I' e3 F! P$ `6 B, u
:x     #切换到第一个文件% B) x4 a' K( i$ N" c. p
:d     #从当前列表移除文件
. ~% Z! p, L7 K8 c显示文本头部内容--head1 ^/ i9 r/ o$ d9 A) s9 s+ b( O

4 P9 R+ Z0 C4 C# Mhead命令的作用就像它的名字一样,用于显示文件的开头部分文本。
9 Q7 \) D3 R+ W9 L* k$ ~2 J* t5 b常见用法如下:

3 p1 {- P; m0 B9 }$ p( Bhead -n 100 file #显示file的前1005 x5 t  X$ l- J9 G) _
head -n -100 file #显示file的除最后100行以外的内容。  ' J) u! D- e/ v0 D+ P
显示文本尾部内容--tail2 m4 G$ N& f" C# |
- |5 S0 _5 y4 \! t+ T2 p
和head命令类似,只不过tail命令用于读取文本尾部部分内容:0 E) Z' {3 y2 N8 \
tail -100 file  #显示file最后100行内容
# n5 G+ E, B& [' o# Y- Otail -n +100 file  #从第100行开始显示file内容   
# l( y1 I' I. m! ]# B; E$ Wtail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:2 M+ M3 L' x, U: N$ [% k! n
tail -f logFile+ A# ^: D3 E. F5 O9 o
对于更新的日志内容,会实时打印到终端上,方面查看实时日志。- V( E; g% i6 c1 s
指定顺序显示文本--sort" R1 }  ~, W3 V9 }/ f1 u! J
$ O, E- i+ s7 N, h8 m+ e
sort可用于对文本进行排序并显示,默认为字典升序。
4 d2 X# R8 r6 {6 V1 U- |% h% u例如有一段文本test.txt内容如下:
/ a" _1 B6 n3 {
vim, Z( |+ ^1 w  c8 k/ r' F" N
count3 \7 d7 d6 V2 o+ f4 X) S$ a& o
fail
) [$ }" J" ~% w$ Lhelp
( S! D- [+ r3 l4 Fhelp/ }; N. P" z- Q/ R. B. J
dead# W9 R' e3 Z7 R; j4 c
apple
" F/ h' p3 U' ^1.升序显示文本& j4 o2 v1 V2 H4 l9 A
使用命令:
6 l3 F  j) v% e/ W4 X( N  H8 n9 {
sort test.txt
% c6 a0 K( w* t0 E5 K- B: Kapple
$ t/ a( c4 K0 m% kcount. E+ v3 {. B) f1 M2 h; x
dead
& z; u8 @* I2 @2 Z' jfail, `* b) G4 U, n( k6 B- b
help' L3 Y. G+ Y+ R9 k  c
help% m2 G8 I! d: j$ c* K
vim  Q6 N$ {6 g/ `4 o% w5 j9 X
文本内容将以升序显示。
  c+ H* P4 f. z8 c& o  ]* ]% Y: f2.降序显示8 |1 _, v  u7 c
相关参数-r:

2 K! I% y3 k- V; w! K/ ~sort -r test.txt
9 @2 @' O$ a6 B# c# M, Evim+ v7 }1 T2 w0 ^% v$ m# |6 m
help
8 U* ]! O6 }* s6 phelp& O( B( l* |& W# t/ e. F* k& J) L
fail
, g  K& c' Y0 U9 N5 ]" s% fdead6 T) x4 C0 Q( c7 s1 F' v' ~
count+ v  ]& M! P3 ~
apple
8 R- P$ p1 g. A3 g( S/ }6 J0 K& u3.去掉重复的行6 T# }* l# N& s7 ?- X$ k7 p4 ?  P
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

) B. Z* F; G0 g5 E* I8 K+ O- [sort -u test.txt0 f2 ~! [/ t/ r
apple% d, x% ^; ?. l. o
count
( D7 s1 d# p0 ydead
# C5 e+ i0 U, G/ ?! Yfail7 r/ k7 e, Q$ w* P& p. P/ ^
help
! I: ]% G3 M/ u1 bvim
, @: w3 I/ \& }/ H可以看到help行不再重复显示。4 t5 q3 _. `8 m5 W
4.按照数字排序8 D3 `& r7 L) O- E; l% Z- C) u
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

% P' R# ~8 m( _! d8 h# a; Vsort -n file/ J5 D* f- Y) t$ s' \
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。" a8 u: P1 K: _& W
过滤显示文本--sed) f) F6 W6 M  n' Q! @, n
! x$ ~! I# N0 b4 J
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
! C; J- @7 b4 R, e5 _# J1.显示匹配关键字行% }! Y7 `) W) M* s4 M( ]5 e
有时候查看日志,可能只需要查看包含某些关键字的日志行:
7 E! h0 x! _. b2 y9 q: N4 J( A$ ]
sed -n "/string/p" logFile) W1 \2 j4 \: _4 b
上面的命令表示打印包含string的行。/ e( y) N/ }$ E& W* t$ _3 _: r; C/ |
2.打印指定行
+ |4 _( l$ D; X1 @* v" Bsed -n "1,5p" logFile #打印第1到5行/ h% j, `0 }& _5 X) V
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号: F/ }4 g  C" I; C) }2 e5 O3 @
sed -n "10p" logFIle  #打印第10行
% |* ?1 {8 i  u7 J% ?去重显示文本--uniq0 f& V9 B6 U& S" ^
. ]' g8 g5 V+ W9 y1 q2 G
常见用法如下:
5 o% t# u- r  b9 Euniq file  #去除重复的行
7 a% o# O3 ?$ I9 T2 Xuniq -c file #去除重复的行,并显示重复次数
6 }  L) J8 I3 _2 J7 x& A6 {uniq -d file #只显示重复的行' U6 u" J6 R5 c- i; W3 D7 ?" b
uniq -u file #只显示出现一次的行
6 _% {6 y8 ]1 o( A# N1 n! q. Duniq -i file #忽略大小写,去除重复的行# Z! L. S4 ~& Z- o$ u6 h
uniqe -w 10 file #认为前10个字符相同,即为重复/ }; o. J5 Y7 k  Z
文本编辑查看--vi' v+ o3 V5 M+ F% N9 C

. U2 }- a; B: u* t" f% v/ T) a查看文件也很简单:
! G7 e  Z7 ^! h! W8 a! E6 hvi file+ o8 E2 }$ W+ b. W7 |; {
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。' r  }( N' u+ w* A  T2 M) @5 p3 r
总结: `0 v4 U& \) |; u; h

; @) ^" ^; O; ?文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
" N; {8 n( S2 N2 d

微信扫一扫,分享更方便

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 08:07 , Processed in 0.060411 second(s), 32 queries , Redis On.

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