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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言( r5 R$ P1 R4 n0 H8 F/ r$ b
6 G! ^/ B# M/ p! E# j* A
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。2 n4 ^. {5 n8 P0 t. O3 c3 @
全文本显示--cat0 g) {2 X& n! B8 O- y! d
# e$ s* W2 R: B2 A; `0 a
cat可能是常用的一个文本查看命令了,使用方法也很简单:
+ }% A4 N9 c5 u  J- b" ^# y1 Icat file  #全文本显示在终端
, R1 M& |. Z6 e, p& B. Gcat -n file #显示全文本,并显示行号
$ o+ u4 p/ E) X) P) q& C另外,cat也可用作合并文件:
1 l6 x! B, P$ S$ Tcat file1 file2 >file3* c  Z8 I" Y7 k% P3 f. i! g' P
该命令将file1 file2的内容合并写到file3中。
% x; K# {2 u4 O倒序显示全文本--tac4 ]; @' s4 y7 {8 R
0 t+ Q% _. r1 V- c0 g$ `
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。. `% I+ {9 V0 O' Q3 h
tac file8 h' Q  h' L$ A; |0 Z6 t4 H  R3 i
分页显示文本--more/ U6 b0 g3 a9 B

1 m/ U7 H# E$ v: H; Dcat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
) R! b4 e) O# o5 @3 I1.显示内容

$ }- c3 K- B7 D5 n) O( v6 Wmore file
+ O! G% J! ^, N0 p. c! h+ B之后,就可以使用按键来查看文本。常用按键如下:
3 x) I5 q! m5 I* _/ [  V- O回车    #向下n行,默认为1行
( U% R# W) p; t4 N空格    #向下滚动一屏8 I2 Y" Y$ f" h, b
b      #向上滚动一屏1 n/ y* V& y8 _7 b
=      #输出当前行号% E$ ]! ?+ u) q$ W2 b
:f     #输出当前文件名和当前行号5 U& U$ B1 z5 s
q      #退出6 `/ h& o- k# y* w4 b) W  ?
2.从指定行开始显示' B/ T* _4 R) I  T4 n2 i
more +10 file7 k9 @# Y+ y2 {  _2 y& D' e3 G" `6 s
该命令从第10行开始显示file的内容。- O2 B/ C+ M5 M6 N- Z
3.从匹配的字符串行开始显示
# J/ n4 O4 G( ]- Y. y' P: Wmore +/string file6 N( K! [/ R. G5 l. v. j9 ?
该命令从有string的行的前两行开始file的内容。
6 f! T- T5 K. L0 e' W- ^! b+ v任意浏览搜索文本--less9 W, |7 k5 W2 r3 S3 H

5 w( O) N, l$ l7 Iless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。
  h& x. D; G0 A# l常见使用方法:
3 }8 {# k' c: |. ]0 X$ r% H+ Q
less file     #浏览file
9 q$ I5 x# Z* cless -N file  #浏览file,并且显示每行的行号+ _, m. ~8 a* L$ n( J' _3 A" f
less -m file  #浏览file,并显示百分比
$ n+ D# g: W6 P% q. f常用按键如下:/ ^/ K) i+ _( U0 {
f        #向前滚动一屏) V" A3 N/ k3 I  X4 |
b        #向后滚动一屏  p2 K) W. ?7 m7 i* O+ R
回车或j   #向前移动一行
3 ]5 D5 x" z6 L" d/ p4 Fk        #向后移动一行; F2 c( A5 k% s2 D5 o
G        #移动到最后一行
# E+ p1 J# n9 ~+ qg        #移动到第一行
9 N- I% ?: e) y1 r/string  #向下搜索string,n查看下一个,N查看上一个结果7 ?$ P9 ?5 P' q6 l; J9 ?* o( u
string #向上搜索string,n查看下一个,N查看上一个结果/ [# G! Q7 C5 Z7 _, Y7 ?" u- X
q    #退出% X: w6 n8 p- i
相比more命令,less命令能够搜索匹配需要的字符串。
3 K) ~* q& R* X: D6 F0 m% G1 c另外,less还能在多个文件间切换浏览:
3 {5 D7 F" }, V- _1 i; t% _& o: I
less file1 file2 file3$ c; {: G+ {3 V4 [3 H
:n     #切换到下一个文件
) H& {1 o7 O3 o8 o. K:p     #切换到上一个文件
: }& E2 L4 S% S, f' ]:x     #切换到第一个文件
/ @0 I" A/ m4 O, {:d     #从当前列表移除文件2 Z$ I/ R# t3 Y/ {
显示文本头部内容--head/ p- [: S6 q1 r0 s5 D
  |1 F" ~& |% i
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。
! n+ @0 @$ B  T" ^/ d5 H常见用法如下:

: s( c; D8 K2 `. @! l% o& I7 khead -n 100 file #显示file的前100" x0 Q' Y; w) R) x: C+ Z6 j8 |
head -n -100 file #显示file的除最后100行以外的内容。  2 s' c3 E, `! f2 L( b: H
显示文本尾部内容--tail/ T. z2 V2 B+ D* U$ p0 a! q

& G$ k; z. S- I. e7 {- g和head命令类似,只不过tail命令用于读取文本尾部部分内容:/ K. @& q4 i* o3 g" @9 B! V
tail -100 file  #显示file最后100行内容4 ?0 \# d9 a) j
tail -n +100 file  #从第100行开始显示file内容   
  n% Y  f3 }0 z0 ]0 z* v8 |tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
9 P; ~7 G9 O5 wtail -f logFile6 {6 R# b9 B; I$ c
对于更新的日志内容,会实时打印到终端上,方面查看实时日志。) r8 D, T4 a6 J  I$ _! o: A* G) B5 `6 r/ q
指定顺序显示文本--sort
% ]2 Z4 P' ~$ _( w' {. N' p9 G/ C5 o; k; V3 ]5 v
sort可用于对文本进行排序并显示,默认为字典升序。
% w2 O; m2 L4 N/ Q* [例如有一段文本test.txt内容如下:

! {' i2 ?: }  D3 g4 S! c+ `vim' Y, |7 n- o& h+ Y+ J
count) V4 B( Y6 L/ A0 F% Y1 o
fail
9 |: o# ~+ z9 P5 jhelp
8 M8 X* _5 x( v6 v- }- h4 lhelp& F  r% Y/ H2 O
dead
$ x% j+ d+ U) n  w: T& lapple; M, {8 I: X" P; {4 B  I
1.升序显示文本* [) s7 F; e2 ^- Z- C$ c
使用命令:

7 O0 ]' X1 x& E  I: G7 Usort test.txt
2 B. [% B) Z  @3 R3 M/ oapple$ ~% U" L2 x9 f2 ]0 ?7 Q6 Y% T5 [
count
- b0 d6 l. n) Ddead7 A0 O2 W& H% H- \9 T$ j, p
fail4 _" U! v0 L, r* [: D4 H$ p8 C! P
help5 W3 ~) q; Y% t* W$ G
help6 [$ m) T! O+ T. r1 O
vim
' e* O: p, r& D) I/ J文本内容将以升序显示。" R. q/ k( l; q9 x
2.降序显示
& `- K7 Y8 d: H9 [相关参数-r:

% l0 z0 ~2 X. X0 _  csort -r test.txt
9 q" K8 g' r! j6 }  rvim7 W8 W: L$ ~5 o0 D
help
" _0 C) Y; ~% H' qhelp: ^* G8 i3 y( d6 ^2 p
fail$ y3 M+ ~+ p6 T+ _. l  |+ w! i
dead
; h0 Z& e( Y: ^" M' J- M  Ccount
! c  q+ P# D) H# H& N5 Rapple9 r$ u! L' F! l2 _9 F
3.去掉重复的行- r8 L# W% F5 p6 v
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

. e: @! \9 e/ n; ^5 |! jsort -u test.txt
! K' m& [' p8 D' Aapple
0 n9 L0 ]8 [; N5 ocount
! V8 n9 J$ p" B1 }( h7 ]dead
/ V1 P$ o0 Z  b2 B0 E. H: Dfail* |# W) p( e7 s
help0 P9 g) s/ m, l3 Z- @% m, {7 A: q
vim
& O+ m9 D& K+ ]) U8 t可以看到help行不再重复显示。
% p* B4 {& Z. ?4.按照数字排序
& R/ j9 _1 C% e3 [# O; ]$ Q0 S: Z如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

' O5 f/ l2 v$ _1 L/ L3 F3 Ksort -n file: _$ |/ z2 C1 `! F! n8 \2 P2 b0 o
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
1 K0 t) J6 Z5 j8 Q/ m/ x; C! D过滤显示文本--sed; K& L/ r# y6 F+ s, h8 {' A! h

, l' ]! h/ b, U3 ~2 p1 G2 osed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。, y5 t( \: R& ~+ }
1.显示匹配关键字行: W1 F, d+ e% P; r  Q4 ]: |5 J
有时候查看日志,可能只需要查看包含某些关键字的日志行:

; H' J/ Y. t! F$ s# Msed -n "/string/p" logFile6 Z6 A# T, O3 |7 u' p
上面的命令表示打印包含string的行。
2 {4 ?* ^  v9 g; U2.打印指定行8 t3 Z- Y2 s: C0 v
sed -n "1,5p" logFile #打印第1到5行0 {; z2 b! \+ l6 W
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
0 ]) {$ C( X; O8 Bsed -n "10p" logFIle  #打印第10行
$ e  s- P) }4 G( `( {0 j2 x去重显示文本--uniq
7 f9 N8 f9 }7 F) E
3 j  a9 F  B" E- R0 D  o常见用法如下:- A' \" e1 a- h" l
uniq file  #去除重复的行1 [4 g: G) Z. G2 T: y' \! e6 f2 x
uniq -c file #去除重复的行,并显示重复次数- [& {$ p0 N3 F) [/ B! ^; }
uniq -d file #只显示重复的行" i3 \3 g+ _: c: @! j1 F, P; [
uniq -u file #只显示出现一次的行
3 Z3 |- M+ Z; S/ B( c7 Z; N; Juniq -i file #忽略大小写,去除重复的行" o# V1 a% n# ?1 E9 f
uniqe -w 10 file #认为前10个字符相同,即为重复
6 W4 h9 p4 c, P/ g) ~- @, D文本编辑查看--vi& y7 S+ \. L6 ]9 a  c& ^* Y: y

" y% U2 m5 f* U% l( Z查看文件也很简单:
7 E: c" ]5 q: G2 }vi file
3 y0 N% E+ j9 h+ y5 e2 W而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。
8 k+ G3 {; w* C- L1 ~  Y7 w  M9 V5 m总结2 m3 ?9 m( \  P) i

& a8 g1 e0 d7 X0 d文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。8 K' U1 g  m" v! k1 |1 B

微信扫一扫,分享更方便

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-7 07:03 , Processed in 0.051267 second(s), 32 queries , Redis On.

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