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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言7 C9 n. Q$ D/ x9 Z
; {3 ^4 n' N# V2 a
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。
& t# T% P8 @3 J: `4 \9 X1 E& q全文本显示--cat
- v: u5 F2 S4 C) z
+ |4 p( k; h4 |6 L% P1 Mcat可能是常用的一个文本查看命令了,使用方法也很简单:: h  @1 D0 D& X& k
cat file  #全文本显示在终端1 C0 G' A/ m  f- J9 |' Y% m
cat -n file #显示全文本,并显示行号
/ e  S" C$ e+ P! w( F& m另外,cat也可用作合并文件:/ o/ w9 G8 e0 R& a# p: N
cat file1 file2 >file3
- k: q( v9 S$ _. m该命令将file1 file2的内容合并写到file3中。
4 }1 }. i! H$ J& s. }; Z倒序显示全文本--tac
/ B/ t$ X  s. ^3 A+ w& q/ W4 L" N# g$ k- w( n
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
6 u  n$ B1 o$ P, H0 W* H& otac file5 L- |5 F# i  B9 o$ c5 l
分页显示文本--more5 k& f' e: I# F6 b8 f, i$ f
) v) t& S3 k( W
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
% ?% Z8 f% R% C1.显示内容
6 t5 O# A1 P- I) Q" b  t: G
more file0 C- `- \( {2 C$ j( m: }
之后,就可以使用按键来查看文本。常用按键如下:% F0 M8 z0 y, e; i; Z, q6 X- n! [) D
回车    #向下n行,默认为1行
7 L7 M1 c8 R) n, n8 I+ W8 Y- Q空格    #向下滚动一屏
) m# B5 K7 {8 R# w/ tb      #向上滚动一屏
& Y+ s2 d" ~% Q9 Q8 Q$ [, i=      #输出当前行号6 f# Q0 W" J9 i" F- G' p
:f     #输出当前文件名和当前行号! `* J$ v) Y% @
q      #退出
- D- k! e  B$ j$ y. _8 `2.从指定行开始显示4 Y  V* B6 E& A9 n  J# n; Z" _) F! q
more +10 file
9 \" C7 {+ O- V- f( X* z7 S8 B' O) X该命令从第10行开始显示file的内容。
  F1 H" Q1 n* t3.从匹配的字符串行开始显示
/ o$ _$ f' Y+ H& hmore +/string file
, x. H+ ^, P0 m; e. q) N该命令从有string的行的前两行开始file的内容。
0 ^) V8 b" q1 d5 f$ S2 W1 U任意浏览搜索文本--less1 _! d9 k3 R/ d
( _8 W+ z. \) u/ B( _
less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。( ]- I0 ^, o% ], w' u$ N4 f
常见使用方法:
3 D# T. k# f$ C( W' K. ?1 t- W
less file     #浏览file+ z" D) ~+ t& D$ `0 q* L
less -N file  #浏览file,并且显示每行的行号6 D. [) t+ J: l: O9 u3 D. d6 ^+ I
less -m file  #浏览file,并显示百分比5 Z  ^6 ?6 ?1 Y. _4 ?
常用按键如下:! u& h( p, O) @+ P0 y
f        #向前滚动一屏) Y' _: E8 ^( Z8 J
b        #向后滚动一屏! N1 F4 C# p) p: X* S
回车或j   #向前移动一行; @' @/ y+ D0 g6 G4 ?
k        #向后移动一行1 [1 }% s0 p. u& L  A
G        #移动到最后一行
5 F* X  Z: o- z9 |4 _g        #移动到第一行
  Q0 ]) n; P1 u6 n7 w& {* d% Y3 d/string  #向下搜索string,n查看下一个,N查看上一个结果
1 ]4 f7 t! x1 ?& c4 `string #向上搜索string,n查看下一个,N查看上一个结果* }0 |4 n% K/ j, m
q    #退出; [$ s: U. l8 `' M) o9 d  d
相比more命令,less命令能够搜索匹配需要的字符串。7 ]% R) Q  G% ^! v7 n
另外,less还能在多个文件间切换浏览:
4 Z, e+ g- ~3 u( v9 x4 V; [9 z/ |
less file1 file2 file3
/ G! k( z  Z. W$ s- J1 r:n     #切换到下一个文件0 {" R7 C* I0 M3 j% ?' ~! O
:p     #切换到上一个文件! h" i" r2 o8 x, f3 }
:x     #切换到第一个文件( `% x. K/ V: O" l
:d     #从当前列表移除文件
& T5 l% ^1 \# I% S$ i% ?1 J3 J2 @. d显示文本头部内容--head. W5 g6 ^) U: A& g+ A' a

+ E/ k6 @. Z6 V) G# m( Lhead命令的作用就像它的名字一样,用于显示文件的开头部分文本。
$ s7 B6 X9 }/ P  I# k常见用法如下:
9 A. \& T- x2 C
head -n 100 file #显示file的前100$ r' [! C5 ]6 i, N! u; Q
head -n -100 file #显示file的除最后100行以外的内容。  
9 i$ ^7 T* b2 S3 a* N显示文本尾部内容--tail
4 y* V+ i4 t! d) m6 g+ H0 G7 \6 K* ~
和head命令类似,只不过tail命令用于读取文本尾部部分内容:9 ]8 d$ n: d; v; T% h- |
tail -100 file  #显示file最后100行内容/ s& D8 r' o7 |! p( ^
tail -n +100 file  #从第100行开始显示file内容   
, h. U8 ]. c& G8 ^6 jtail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:3 j3 `& s' W: ^; V. I
tail -f logFile
! w% R5 m# n# \/ |对于更新的日志内容,会实时打印到终端上,方面查看实时日志。
% {; d- E7 |! f& I( f" X指定顺序显示文本--sort4 [+ o% }6 |+ N9 t' T& V
9 i& e, q- Z9 G7 o0 w) }9 a7 k/ w
sort可用于对文本进行排序并显示,默认为字典升序。
! t; t' l2 p# d( C6 ~- f" }例如有一段文本test.txt内容如下:

/ \) f, ^, M+ I& M- b# bvim
4 o2 `% ?5 V2 Z9 ^6 B" kcount/ b& Z1 H# G9 g1 ?. y( o( h
fail6 _9 s2 _9 S. u  Q/ m
help  F: v, y5 ^9 D9 E; Y; H
help
# v! `$ o; ?8 G# Idead0 P5 L6 E) _9 v. S
apple$ X$ K# D( l9 o2 e( V
1.升序显示文本
4 B& M/ E" h5 B5 @5 j2 x/ U使用命令:

2 N- h7 Y  E5 u3 O- ^sort test.txt
& V* {% D. K, l3 c5 t' Happle
+ |3 q# B) T% u0 [# \( mcount* R' U3 V; X; d, ]
dead, J" y4 N) H% F( g5 a; g
fail  d9 u7 {. y: E- k& f' L: r
help
+ j( }# f) d9 J" A9 mhelp
& p1 E( ?3 c: d/ v+ pvim3 ^6 _* q; A) `- b" g& m" m
文本内容将以升序显示。
- D( f- B! c3 X2.降序显示! F4 g0 t4 _3 `- v1 r# o
相关参数-r:
3 q8 w9 r8 y- V/ g5 D) z  X
sort -r test.txt
) S* C* s- p6 Y3 bvim( G# |6 f6 I" @* z/ o) U: g; ~
help% G9 R: e( E4 I* G
help& B( e& d2 N, n/ H2 e
fail
) i- _% T6 ~, h2 _/ s3 Bdead- m! L. c+ B/ t4 m1 ?) \# N
count2 n+ r( n2 ]+ I- V5 z0 r2 j
apple* a- ~( X( m, d3 }! k7 W' d
3.去掉重复的行1 Y$ ^+ A6 j8 [6 w4 F$ r) y
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:
! h5 M# L3 \% ?% ]! I. C
sort -u test.txt
1 f/ J' A$ D. sapple
  M4 A3 K- V  x6 fcount+ |4 ^6 ~! }: x
dead
$ X3 q9 L( s' Qfail* L& \3 ~  ~% ~; ?1 k+ X
help5 h) x3 c0 X2 Z0 x, c
vim9 [( ~3 I8 U5 n6 I; f& U. k8 V
可以看到help行不再重复显示。
" O! ]5 P9 ?  g5 [6 o- y4.按照数字排序
4 C5 m. i! F  c# t1 d7 |如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

; y8 {  h/ V3 K% l' T7 N! Hsort -n file  c, k2 d; J; M8 K, Q# ^. U
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
7 k( ]# ?8 B0 `& P0 b; p2 g过滤显示文本--sed$ E  ?0 R$ @) Y

. W* |! `% T# H/ }- Vsed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
4 }4 n2 @$ l$ P* i( G1.显示匹配关键字行
3 ^* K. k4 F1 ]4 e$ K& i# P) Y/ y有时候查看日志,可能只需要查看包含某些关键字的日志行:

1 r1 O0 u4 [7 A' {3 T: ksed -n "/string/p" logFile
0 @: |0 c' J$ y6 [. q0 O, \上面的命令表示打印包含string的行。
9 t$ M, Q3 t. C7 s) E  y2.打印指定行: T) k4 [% `0 E- |
sed -n "1,5p" logFile #打印第1到5行
6 s# W! v! m4 T# J' xsed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
: U. W! ?& a# \8 r' {8 r. zsed -n "10p" logFIle  #打印第10行2 G- C: m7 ^. i
去重显示文本--uniq9 ^5 K2 V5 p4 o
) J$ }4 d7 W  X- x
常见用法如下:
6 p  ?( L  a. w' t( c' v, ?% p. k8 `uniq file  #去除重复的行9 Y3 R+ h  U, Y6 G. H. o5 u2 o+ R6 B
uniq -c file #去除重复的行,并显示重复次数
+ P0 B: q' M9 V- V2 r' Cuniq -d file #只显示重复的行
7 E1 [0 p7 D4 @$ q" `uniq -u file #只显示出现一次的行
9 _6 F3 V3 g% i2 k, E+ Kuniq -i file #忽略大小写,去除重复的行' X* z; m" p' @* r* l! S' Z1 _7 X
uniqe -w 10 file #认为前10个字符相同,即为重复0 q- O- x" v& T' \% Y& w& M* F
文本编辑查看--vi
  L+ v! ]& `% l. S/ q8 n
8 J; b+ t6 |0 Q0 B0 v5 U查看文件也很简单:
( j* ^# N8 L1 r" l1 _" Avi file
% J/ [" ~0 \0 }& e而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。0 `" N+ j/ C4 `; ^7 B
总结6 N+ ~+ Q# K2 C" f

0 S) W4 i1 S+ b, n. e0 j文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
: O& y0 c# q4 O) T# ?; }

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

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

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