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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
% e8 T2 }) r$ F% F, i5 z8 q# ]; X: F3 ]! M! @
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。4 }: s3 C8 S- y1 \( b  t
全文本显示--cat+ _0 [# e5 I5 _" `9 B$ _* U& z1 c

' W( m0 G' t+ P; Ycat可能是常用的一个文本查看命令了,使用方法也很简单:# Y/ G1 l; p. m# l
cat file  #全文本显示在终端% x- `. n, E3 \2 A  V! @
cat -n file #显示全文本,并显示行号
' I0 p- m5 i: }% ~另外,cat也可用作合并文件:
$ W8 P0 N+ d0 r  U4 fcat file1 file2 >file3
/ B: {2 x* k/ u, A该命令将file1 file2的内容合并写到file3中。
% q+ ?8 F  k1 a3 B倒序显示全文本--tac
# a, M6 z, b7 U' g6 a  Q3 T' G( R7 e# g
" s' d, k0 v/ O& C" ]tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
8 t; d  b$ z  t8 t: Itac file
2 H! Q+ _3 D* r& w* |( m3 I' e分页显示文本--more
4 \* f# Z6 C5 }
" i$ b! J& {. Ecat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
1 G9 h$ ^- u4 ^: w# U/ Q1.显示内容
# B0 Q5 y$ ^/ ~+ L/ J- c! q
more file
, H# H' Z& N" J$ D) D- E之后,就可以使用按键来查看文本。常用按键如下:
; b! t! n" L9 T% [回车    #向下n行,默认为1行6 M1 i/ y: d, r" [
空格    #向下滚动一屏% S6 B# J9 S5 r( V% s0 D
b      #向上滚动一屏5 {: g5 C& m  f" e
=      #输出当前行号# S" B. P+ z) ^5 T  |/ N' z
:f     #输出当前文件名和当前行号8 r" K6 M$ M% e- g- Z0 e0 j( c6 y/ M+ n
q      #退出
; H( A/ B+ ?* }" P# N( N2.从指定行开始显示) o( s4 G! c. ^3 I9 e
more +10 file" C5 ~! q. T# y, X8 `* p$ m
该命令从第10行开始显示file的内容。
1 C1 y- \( Y8 {2 U" ~3.从匹配的字符串行开始显示
# R: O* k- A0 T' C# a1 Hmore +/string file
$ D+ p3 K5 }% s  j该命令从有string的行的前两行开始file的内容。
* H1 s* `. h) m" J/ ]1 n1 f任意浏览搜索文本--less: R) m  N3 ]1 n

& o5 O& s) i' E  Dless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。  K9 U; v3 J, m) Q
常见使用方法:
4 d5 v7 m6 \+ l! Z& Z1 [& |6 e0 S
less file     #浏览file% x+ ?' U8 ]4 m; h( S
less -N file  #浏览file,并且显示每行的行号
7 D' _' j  p; x$ W* {. xless -m file  #浏览file,并显示百分比
9 M7 o5 a7 w# r0 N9 n2 Z常用按键如下:- o; G+ _9 L: |) {( n( \* [3 c
f        #向前滚动一屏
, n/ u* `* D. t# B5 l% w% Bb        #向后滚动一屏" L5 C6 s3 a5 V2 x
回车或j   #向前移动一行) t! v4 r* x. L! R: b) k4 o8 t$ M
k        #向后移动一行
" {8 ~) x: |+ U6 X9 u4 FG        #移动到最后一行
# G, Z) Z; R9 v4 k& v. @% Bg        #移动到第一行2 ?" s( B$ ^  F/ S% Y. G( h+ b& u
/string  #向下搜索string,n查看下一个,N查看上一个结果" T, z  h! o- D3 j+ g
string #向上搜索string,n查看下一个,N查看上一个结果
: i* U0 z2 n/ i: m# x" A7 Lq    #退出1 i2 H' m3 r+ b  K
相比more命令,less命令能够搜索匹配需要的字符串。' K! }$ d$ s' H. v1 ^& n
另外,less还能在多个文件间切换浏览:

$ `5 L3 ?1 T+ g, S9 e/ N& Gless file1 file2 file31 I0 ]; p% v4 g4 b+ \4 I/ [, r
:n     #切换到下一个文件& r6 H- Q+ H0 e+ c) _4 a3 t
:p     #切换到上一个文件* |+ ~( ?3 V/ R- M
:x     #切换到第一个文件) V8 A( r, g! n( M- p/ S$ F
:d     #从当前列表移除文件
9 U% K% D1 v. t% }$ [- i1 y显示文本头部内容--head
9 K  H' r' W3 \; K0 N" A
; @+ e9 n# K' i, _8 w& c/ H5 mhead命令的作用就像它的名字一样,用于显示文件的开头部分文本。
4 J) \4 E# F+ B* i- I常见用法如下:
2 K2 f  {2 t8 p# S
head -n 100 file #显示file的前1009 `/ ]% h2 i, G/ a
head -n -100 file #显示file的除最后100行以外的内容。    K) F: n" H. Z) U1 n) c
显示文本尾部内容--tail9 J, w6 p9 {  I4 H

6 Z' K$ `# r9 P和head命令类似,只不过tail命令用于读取文本尾部部分内容:
" z. B9 C) _7 B( l* jtail -100 file  #显示file最后100行内容
' d  ~; O; A2 @% K7 e& V' T  f7 ~tail -n +100 file  #从第100行开始显示file内容   5 ]! [8 Y7 r9 u% i& e; B
tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
  g: a# o1 n! U  x' utail -f logFile
9 p: O( P4 p& R/ _对于更新的日志内容,会实时打印到终端上,方面查看实时日志。. k" l3 ]! \2 b. K
指定顺序显示文本--sort
' t) E2 v5 M$ ^7 d! c* m* j' N* ^. I
sort可用于对文本进行排序并显示,默认为字典升序。1 g# N9 C9 s2 e9 e4 v8 X
例如有一段文本test.txt内容如下:

5 G3 l5 j* Y8 f7 H. `8 F. Rvim
! L# H+ a% `; a/ j; ~, |# f$ t. Gcount9 u- J) q3 d8 n( h* h  F
fail
  t- K* q6 q) \9 f+ c, I+ g( u' Ehelp7 c3 T' d5 G3 ?) _
help
2 [# U8 s' k/ Q, Xdead- p+ x0 P/ H' k( V; W0 Z
apple
- n! c9 R0 ?- U" W* g  U! X' [, Y7 B8 p1.升序显示文本
) U0 |" V  H9 p8 g+ `, }使用命令:
9 z  L0 c  T8 S$ A! {
sort test.txt- y8 [6 X  m$ d% i; i
apple
1 @$ M! R: d! I; s% [count
6 I, @& E4 F2 Z* m% I( Qdead, e" H& J4 j, G- v% y
fail; u  E! H% u% ~3 i3 i+ [5 Y- H% ?9 D
help+ Z3 ^+ I& O' r, ]+ f6 Z6 x: O
help
! a! ]& x$ v( Z* Q/ fvim1 Z/ C! T6 C. q7 j, p: \8 O) c8 A
文本内容将以升序显示。
6 O9 r1 ^9 a; J1 l: U2.降序显示, J2 d7 T9 I1 k# h1 n- Y$ S1 \
相关参数-r:
( y8 ^. F( ^' x: E! `. X
sort -r test.txt- h5 ^6 C+ \: D
vim
+ |6 A5 h5 L) b  G5 Dhelp
' d* J) F3 C( d! c  Q9 R  z0 \3 Fhelp
: R  N( E$ [& ^/ g, \$ G3 ifail/ y0 [: r* @5 W3 V/ p2 d7 m
dead! U* m6 Y' p+ W
count
3 j$ s' |6 @( [/ D0 Yapple
3 I! k  s2 [& T9 h, q3.去掉重复的行: v% ~  N: p- @* I4 h' M
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

. k1 w+ D( t* t8 v7 [9 f7 n8 nsort -u test.txt- x% y! |, E7 H1 P: \3 \
apple- \: I. |4 |8 r' k* c' e
count! i/ f( z( r% W; g* v' ~
dead
- P) i) Z: l7 ]; Dfail& v6 {; Z3 _4 b) h- a' J' v- ?9 \
help! K* ?4 W9 ^  f3 z
vim
, z* [* b- p7 ]$ V- X! j# L可以看到help行不再重复显示。
: P5 k1 P+ o% _% D  R. w# t0 d4.按照数字排序; R- \4 b7 }/ O5 |; r
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

3 \& ^! x: d8 e: I7 \8 k. V" @sort -n file2 O- Z( Z5 g) A. H8 H& ]
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
' j, a. u' `6 g0 {  A! T过滤显示文本--sed
8 D- W" l2 ]9 |5 h
# T! r  M# l  m. ased是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。$ O. W. ^( j: a  S! T
1.显示匹配关键字行
% {; c4 S* k# c  f' y- W有时候查看日志,可能只需要查看包含某些关键字的日志行:
) f- y% d1 t+ E4 u0 Q! j
sed -n "/string/p" logFile
& H# F* }& r6 Z- {9 a$ f上面的命令表示打印包含string的行。
" v: W4 ?2 Z8 S  p9 _2.打印指定行; ]0 S# ?0 z! g4 M4 |
sed -n "1,5p" logFile #打印第1到5行
; M0 A. y' ^% G7 w* M$ Bsed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
, [2 c5 B8 K3 ?  S$ nsed -n "10p" logFIle  #打印第10行
5 J3 R* S( t3 U/ N& R1 v) p去重显示文本--uniq& H0 e* r# Z* I( O4 m; _; E. W2 \
/ x, `  X( k8 Z# ~/ {2 x
常见用法如下:
9 F; B+ o: c: G' K$ }9 r/ Y# vuniq file  #去除重复的行
7 s) M7 }& t- E( Luniq -c file #去除重复的行,并显示重复次数
2 [* N) d2 j5 N# Huniq -d file #只显示重复的行
' g' M0 V  U: r4 q1 @uniq -u file #只显示出现一次的行. k# u1 U  L9 a6 V3 b+ n$ s8 [) w
uniq -i file #忽略大小写,去除重复的行$ U: @! r  C3 Y& K  S+ M  X* g
uniqe -w 10 file #认为前10个字符相同,即为重复, r) t% A! z) n. f% l* S
文本编辑查看--vi+ U+ q' u( }8 J
% K$ S- H/ ^, i: N2 A. Z
查看文件也很简单:% _0 Q5 a) j* M8 h
vi file$ K8 D/ s! w; n4 `+ D# R3 h
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。* K4 |# `1 X9 o$ B; l+ f
总结
  }* j+ E9 h: {# R+ s. w
* n. t* O% H* C文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
* y1 B' y/ x* ?) F9 \

微信扫一扫,分享更方便

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 10:45 , Processed in 0.094586 second(s), 32 queries , Redis On.

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