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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
8 d% Q, B5 O9 T( a5 u) x& N0 p- q( o2 G) b, l
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。
3 q$ V6 n5 `& g# x9 x( U1 ]7 U; r全文本显示--cat
; h7 u* P: g8 b
! V+ a9 L/ g. u' Icat可能是常用的一个文本查看命令了,使用方法也很简单:
: u1 F& f* i& P5 Tcat file  #全文本显示在终端4 T) h4 n6 j: s6 V
cat -n file #显示全文本,并显示行号
* _- Z6 t; e  }+ [另外,cat也可用作合并文件:
  T$ q1 }: l8 D; k# Z1 acat file1 file2 >file33 T* M8 {( f5 b  r* Q
该命令将file1 file2的内容合并写到file3中。
1 R" i+ e1 J, o+ o! |: ?8 m倒序显示全文本--tac% _5 i, R6 e) F! _/ A6 L) c7 J

1 |+ x) `* k" {& R3 Otac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。+ Y9 R( M1 h% @; e2 I1 `; e
tac file
, G: e' l/ v% |5 c分页显示文本--more  C5 l7 s' C( i1 [  w
' j" ]# k2 G0 q% s
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。. Y7 P9 S/ w7 ?
1.显示内容

4 P+ |& j4 ]5 @, A/ Smore file
2 u$ B: O' m3 }7 {$ V  w" {之后,就可以使用按键来查看文本。常用按键如下:
' B+ U. _: I2 O& S5 ?% P8 B回车    #向下n行,默认为1行
8 L5 s! N% k" z9 z空格    #向下滚动一屏8 r3 p( u+ a/ @" `
b      #向上滚动一屏
0 e  l' n0 h6 v) }2 ^+ I! Z5 G" @=      #输出当前行号+ [2 w+ S# x. g1 V6 J2 F/ S
:f     #输出当前文件名和当前行号5 d$ a7 l* B5 G  h2 e5 t3 d' H: G( g
q      #退出: o" X9 u2 s5 u& m' N4 s# h3 f
2.从指定行开始显示; P0 m6 ^' c! f; I+ {( n
more +10 file2 F% J8 ^. y. ?* U. ?
该命令从第10行开始显示file的内容。
! u+ J0 @3 J$ d, b6 a9 L4 e3.从匹配的字符串行开始显示$ E2 b! H. ], j4 q
more +/string file( h& T2 ~% l4 k6 l) Q
该命令从有string的行的前两行开始file的内容。+ g; `  ?5 A+ F# w8 t
任意浏览搜索文本--less
# |/ `' N2 q5 H: \6 q5 d6 P
* R/ V. e( [& w% y6 F( Sless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。' [4 W" e- T) i' G: v: Y, `2 W
常见使用方法:

/ k- p- g: q4 t. |; S. t" Wless file     #浏览file$ S/ {9 y  S; G% R! c$ q5 ]
less -N file  #浏览file,并且显示每行的行号8 `3 M6 ?* E: H- H) P8 h
less -m file  #浏览file,并显示百分比( g, c7 [8 e* c* [7 K0 z
常用按键如下:
) o# j; E9 T6 h; s6 Ef        #向前滚动一屏* f& y% \/ ?2 s" f6 j
b        #向后滚动一屏
( u9 I1 b& h2 M回车或j   #向前移动一行: q- A4 T( v8 {* k7 ?& x
k        #向后移动一行0 R4 u1 J7 o: B/ X7 ~# D
G        #移动到最后一行
2 Q1 _5 O1 z5 M" Ng        #移动到第一行
9 P  d0 G1 k5 d2 o' j; k/string  #向下搜索string,n查看下一个,N查看上一个结果7 u# p( S# Q( @; Y  f/ C8 N  `
string #向上搜索string,n查看下一个,N查看上一个结果: U! P; d% L4 J( t$ }- y; F, v) c1 O
q    #退出
' U* c: F* ^- E/ S' H相比more命令,less命令能够搜索匹配需要的字符串。
7 D/ F$ R* D8 K另外,less还能在多个文件间切换浏览:

/ k6 e' w" c+ e% `7 Q4 s7 [+ Vless file1 file2 file3
6 a  V  l! H) u' J  c5 I:n     #切换到下一个文件3 g3 P2 u  t1 e% c) g) @
:p     #切换到上一个文件
9 F- D  u! g# c+ n1 C5 I:x     #切换到第一个文件% C2 I$ _$ A3 d4 d1 ^
:d     #从当前列表移除文件2 y/ x8 D& g1 Z/ k) Y. j
显示文本头部内容--head; ~2 a6 B( Z4 N5 J$ c: ^9 R. @! R! L
( X  y6 ]# V6 ?2 j8 y6 ^
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。( g, ?& J' v7 c2 d
常见用法如下:

' U0 x2 s! W; i6 khead -n 100 file #显示file的前100
; b( h2 ~; N6 v, S& |0 S* `head -n -100 file #显示file的除最后100行以外的内容。  ) Z! a$ _; o/ Y& D( I1 q. ?- `
显示文本尾部内容--tail
, m4 H5 @! S' s+ h: `, Y& @- k1 _( A3 C& n! c$ q8 L2 H0 ]
和head命令类似,只不过tail命令用于读取文本尾部部分内容:
( U* K  ^4 D# J2 I+ L9 Ytail -100 file  #显示file最后100行内容& M+ K) S) x5 F: [
tail -n +100 file  #从第100行开始显示file内容   ; a7 @( ~0 j, d+ P
tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
1 Q5 z* e7 s0 V# x2 H6 M+ a$ Btail -f logFile' G6 f' u5 r1 @1 u: H; ^% X
对于更新的日志内容,会实时打印到终端上,方面查看实时日志。* m( h3 g' f$ Z% `. b' T
指定顺序显示文本--sort. l6 |+ j1 Q% z  [; T. Y

" }) M0 h! y% X5 e: \sort可用于对文本进行排序并显示,默认为字典升序。) M" L. v/ R+ }; ^, e7 ], T6 E$ N
例如有一段文本test.txt内容如下:
  f: d% P" K, s2 o; }6 Z
vim; m( P* ?# B1 i: h7 o
count
* J1 U7 b6 n$ Afail
+ s0 {6 X7 L1 i/ Mhelp
( {9 ], z2 i2 l. C. [help6 T  B  p. A  z% J5 z
dead
0 g5 m/ P8 g) Z* Bapple
" Q9 Y) {) k$ u! U$ t1.升序显示文本
) |; R9 J& X1 P& w0 J使用命令:
. G1 ]3 p9 F  H7 s' O  v0 M( C* F
sort test.txt5 C. k- s& S1 }8 w7 k' Z
apple
( {' z9 n' B* p% T2 N7 zcount
4 r+ t" I& D& ]8 c" ndead! g0 d& f. s5 N, ?6 z
fail
: R2 q; |9 X/ Q: w; @! chelp
% L+ i1 e( H$ ~6 F0 `1 h0 d/ \help3 K9 g8 ]/ \- U7 p$ m/ V! ]5 s7 N' s8 i
vim
, s4 w' n5 q8 E% L, ^- B  X文本内容将以升序显示。
# r& V7 S7 Z6 V6 U( D) v2.降序显示
0 ~) x4 w% E1 m相关参数-r:

; \, A& {  o, w, s+ S: B0 asort -r test.txt
' i. [4 v9 T' D5 hvim
  e$ C/ d6 S7 M3 C6 l* Lhelp! j& |) Q9 j6 Y5 E# N4 u+ Y  z
help
+ ?# n& l& J4 u5 Ofail7 x+ @$ ?7 t" A; K" ^; f8 f4 O0 `
dead
! U/ H; }& q9 `5 N1 f+ r; k3 D( mcount
, D2 ]% |/ @8 T3 u- l1 b) O! gapple/ f/ Q9 q: ~- h8 h6 f0 J
3.去掉重复的行
0 C; s8 [( U$ s% N$ t我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:
2 d4 v' U. `3 ?+ ?% f& r
sort -u test.txt- H( {9 ]7 S' F2 Y" v1 O- K* m
apple
! k, P9 R5 z6 R$ f& ?# W, bcount4 k6 w2 S1 b& r, q1 f# {
dead' j% X# P: T6 j6 z) O- A+ ?+ \
fail! F3 H8 u9 A7 x# U# s. a
help1 v, p8 R; J' k. p4 E- i* {' L
vim1 T% E; d- c' p4 I& q
可以看到help行不再重复显示。
* ?! H  `0 e  a3 s4.按照数字排序$ r. T% @- E% \0 X  w# ]( {( ?
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
  a& j3 h# _- }( Q3 G3 L
sort -n file1 z% n, E% v7 P$ ^& ]& {
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
4 p$ e3 ]: j: y/ j过滤显示文本--sed
- k8 D. P7 @/ l% w/ C& Y# F+ P( r
' I0 W: g0 F+ f1 Ysed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
4 v/ j' R+ e5 [% A1.显示匹配关键字行
; a# C; L8 g. @8 |6 F有时候查看日志,可能只需要查看包含某些关键字的日志行:

; I* K! n( p9 q$ h1 ysed -n "/string/p" logFile
9 l- _$ I$ m. n4 [# K. m上面的命令表示打印包含string的行。& ~& P* k- w" }/ l# B$ n! ~
2.打印指定行$ f6 s& ^6 Z, e6 S0 D1 r
sed -n "1,5p" logFile #打印第1到5行4 u$ L5 N( o7 D) D2 B0 s  [8 S
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
( P% ^- l! v& H% Z6 r( g, I( d. ?4 Jsed -n "10p" logFIle  #打印第10行
7 N5 e8 d# L* c' ^3 a5 ~去重显示文本--uniq
' b3 D2 j: w9 b+ Y4 g  V  ?3 P# h2 T- E) t" U+ L) f$ B+ e0 z
常见用法如下:
% q  A3 A% P2 n5 t! juniq file  #去除重复的行
; S8 f- u1 @; |  k4 L7 T3 huniq -c file #去除重复的行,并显示重复次数7 w/ k7 `# S8 |. n' N  [' s4 y5 b
uniq -d file #只显示重复的行2 K$ y" B9 Q! _$ |/ }) t( v
uniq -u file #只显示出现一次的行" H0 Y4 z" l) p
uniq -i file #忽略大小写,去除重复的行
# L6 A. n( y2 a0 tuniqe -w 10 file #认为前10个字符相同,即为重复8 Q/ S. U' |) O+ i$ @
文本编辑查看--vi. S: V( ^1 I& i  g# o7 u9 g
1 [; \/ R0 i8 D! h( f
查看文件也很简单:
/ {: _. e  V( J8 K7 `6 w2 o. ^, bvi file/ s6 u5 L0 i6 E" F
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。# `6 N$ D% O  ~( g/ U
总结
/ C6 |+ L% r, p; z2 f0 a7 p
: [, j9 Q6 L8 r7 E6 p7 O文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。, J3 N7 D' n2 l

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-23 08:08 , Processed in 0.079300 second(s), 32 queries , Redis On.

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