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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言4 U0 h2 i6 t; W% ]! \

- W5 L8 k2 f- a% M5 KLinux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。' b5 `  n# T# ^  V; x
全文本显示--cat
7 n, X6 {1 V6 ^' G
& j6 L6 e' m* a: j  [) Lcat可能是常用的一个文本查看命令了,使用方法也很简单:0 x" R0 s! X! ]  t/ f
cat file  #全文本显示在终端& t4 A% E8 {) d9 Y2 \
cat -n file #显示全文本,并显示行号; r! A% c) y* Y& d4 F* m
另外,cat也可用作合并文件:& {+ @! P: a; |1 ]6 j, T# S
cat file1 file2 >file3
# t' z8 g1 I- O$ }( `该命令将file1 file2的内容合并写到file3中。
9 d! x/ A$ C; \# n/ n- n2 {倒序显示全文本--tac, S: ~. P% n* j6 N# G5 q

( D" z7 A0 p. s9 Qtac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
" O9 m$ z( B" B7 V. Otac file4 x1 r0 \& G4 L0 Z& l1 b
分页显示文本--more2 R# l- E3 M. {; a
2 j  q& G0 N6 V4 \( L
cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
; n  A5 L! W( w3 u1 w( ?1.显示内容

) k, F. S: R% ?& w. j' Qmore file
* A  b/ u1 ?5 j0 U5 \) D2 Q- t之后,就可以使用按键来查看文本。常用按键如下:% \! ^8 a& H) q0 N+ K  ^
回车    #向下n行,默认为1行
) h7 w. W2 N5 E0 c5 Y空格    #向下滚动一屏, n6 `: X: i' g5 |4 i
b      #向上滚动一屏
' `& P1 W# E* Y" h) h=      #输出当前行号
* o* V9 h/ b6 ?# n; X/ M0 W# G! {  y:f     #输出当前文件名和当前行号
; G, h3 h/ b+ s4 g$ p; a1 mq      #退出9 |- X0 d, {  ]+ y2 l8 K" x0 |
2.从指定行开始显示' L+ x8 k4 M0 v" Y8 l& N
more +10 file
* O, c  s! \& M+ V该命令从第10行开始显示file的内容。
8 G  T+ ?6 K- W" J3.从匹配的字符串行开始显示0 K- V2 ~* v0 x+ J; D7 c7 p
more +/string file
, q3 G' x$ w! G7 w) s该命令从有string的行的前两行开始file的内容。# ~" u& W3 `5 G2 |
任意浏览搜索文本--less
" L1 E8 _( ]8 \. Q! X9 y& d  a) Q8 O1 q
less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。. v5 E7 ~. R% p: C3 y' t' h
常见使用方法:
* ~' A1 Z* w& I$ n, u* O
less file     #浏览file  U5 i5 E6 \& ]6 a; L' d# A+ U9 P$ s! u. H
less -N file  #浏览file,并且显示每行的行号
: y7 A/ {6 E. I0 i+ Rless -m file  #浏览file,并显示百分比8 |2 g( X1 }: i& n
常用按键如下:7 y9 y( }; g  v& G. \) L
f        #向前滚动一屏: h5 S- D3 R3 v" A" u' c% }
b        #向后滚动一屏, C8 ~! N( Z3 v5 Q; [
回车或j   #向前移动一行8 D8 i' D7 c4 Y# D
k        #向后移动一行: S4 d  F; w; N! b% z2 c" h. R
G        #移动到最后一行5 U" P5 T, k& ~  x1 ^: ]' \
g        #移动到第一行
- c: I: t0 \+ h; |; E/string  #向下搜索string,n查看下一个,N查看上一个结果
; H$ G3 o+ M# e( \2 r+ b7 gstring #向上搜索string,n查看下一个,N查看上一个结果
& E( ]3 Y1 w% qq    #退出
8 h! I5 Y7 y9 F* U相比more命令,less命令能够搜索匹配需要的字符串。* I% V) I; C; d
另外,less还能在多个文件间切换浏览:

( [, a0 [( U# W$ F( uless file1 file2 file38 j9 \* Z" w! U, i0 C( a% B9 _
:n     #切换到下一个文件
! X% l0 D, |' x) q9 W:p     #切换到上一个文件
7 ~1 z* Q' x+ L5 Y:x     #切换到第一个文件7 |: H, d/ Z+ I" b! L' I: G
:d     #从当前列表移除文件
: ]0 n2 b: Z. v显示文本头部内容--head( j, @8 c: n/ V' m4 B/ g+ }

$ y) \! C9 S. z  |" n" f* Ihead命令的作用就像它的名字一样,用于显示文件的开头部分文本。4 h6 P  Q8 E  `- N# ^" w5 A$ S
常见用法如下:
% [1 t& f; Z( s% H
head -n 100 file #显示file的前1005 ^$ V0 w: q  N: F! N- A& x
head -n -100 file #显示file的除最后100行以外的内容。  ! I/ H  _* n1 S6 X
显示文本尾部内容--tail
; z9 @- D1 ?5 ~! N! u+ j* }- s, U0 Y5 Q, W7 s$ O0 ?" l
和head命令类似,只不过tail命令用于读取文本尾部部分内容:5 V3 a" @4 D% K( i4 A* }. C
tail -100 file  #显示file最后100行内容( O( \1 |5 {( u! f# G. Y
tail -n +100 file  #从第100行开始显示file内容   " P- l( \- @6 @! X: j2 w
tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:% e& l0 H9 f) {' {5 k2 B: [& N
tail -f logFile
- h2 h& h+ G9 q$ s4 a对于更新的日志内容,会实时打印到终端上,方面查看实时日志。' @& D& b) H8 z8 \: p
指定顺序显示文本--sort
/ i( T; g( l9 H% x5 s2 W! Q- Z
! H* M4 W, R. A, `2 X9 h3 }4 Csort可用于对文本进行排序并显示,默认为字典升序。
0 P1 _0 l2 p2 ?, N& P例如有一段文本test.txt内容如下:
7 q8 ?$ |0 y1 U0 {% _$ Z
vim( T$ y3 b2 x$ m5 d
count" p4 s% J6 ^7 a" I- O" [' z
fail
$ I* b' \; K( Chelp; q: h. K1 v. p6 M/ I) J1 i
help2 u2 d7 _8 n2 r) o
dead
  [6 P( Z5 g" W4 Bapple
3 H  I4 ^1 e. ?3 }/ q. ^) W1.升序显示文本
% S5 f8 i* H4 G. z# A使用命令:

2 R+ h) `: k/ a8 ysort test.txt
- R7 w5 |, p" ]apple5 p8 m9 J9 y. g9 S6 R
count
4 V: d2 C2 |% @% Idead
' B4 H( s6 z7 j9 cfail9 Y/ U0 s! |" q# Z, O
help% q/ r7 \3 G6 \
help% x8 A) {7 s1 [, ~/ z0 z" h' U
vim, u0 y: f: B, F$ a+ o# K
文本内容将以升序显示。
+ p8 @* t" F0 s: g2.降序显示& L( E/ u2 V* f$ _' o
相关参数-r:
% H  l5 d4 t( \; \* q5 T6 C, d2 j
sort -r test.txt
  F/ `7 u% R) T% U% [# E3 Zvim2 _$ U: x2 X4 C+ ?* t3 K8 P3 m- \
help
. U5 t! I" ^5 ~7 b! ahelp% e! f1 ^* C+ Y0 w
fail
. j. r. ]  c+ W2 l3 P5 ^; ^dead
8 F8 {9 U' h* E& G. [count1 Y) [' N0 J6 `. s
apple1 G% I1 R  p% `, c' f9 y
3.去掉重复的行, q" K/ H7 e. b
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

+ a/ n# @$ l( y' Bsort -u test.txt
0 A% e, @' q" |7 \9 z5 u4 _! vapple+ V8 [+ d6 g3 u  ^: `/ G
count! L8 h$ i8 w' e' h1 v
dead
& u4 ^' R7 o* r4 @  z8 x8 Gfail
- J0 D3 z1 K9 Phelp
. {+ q8 x  ]7 }1 \4 _; c  wvim5 R/ u3 J3 [4 Q8 W! Z+ q* I
可以看到help行不再重复显示。, I8 C6 c) D0 G9 Q; X- j
4.按照数字排序4 W- ^- u( R/ g% A1 c" h% Y& H* z# ^
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

) H2 @  Y7 K" ]* d2 Hsort -n file
: Y, x3 G( z' g5 o, B( h3 u" t由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
8 a9 G5 p$ j5 Z1 M# v8 k2 B* z8 S过滤显示文本--sed
1 k9 J% S8 V4 z( b* L7 N
2 C. r6 v6 v" R% {" @sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。
  q$ Q, m- z/ e1.显示匹配关键字行
$ H7 d. n- t0 P! ~; R有时候查看日志,可能只需要查看包含某些关键字的日志行:

+ |+ D/ a3 B+ r: Q( S, Msed -n "/string/p" logFile
; S6 |  _3 [; N8 r( m# V9 f3 n上面的命令表示打印包含string的行。
3 e; p/ g3 K+ B7 @7 E1 ~2.打印指定行3 Z' F* _' E8 i
sed -n "1,5p" logFile #打印第1到5行
# o+ t1 n" c9 t2 K* fsed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
5 c4 R7 t3 Q* t0 l9 K5 p; z* rsed -n "10p" logFIle  #打印第10行
! w4 V/ K& d7 T5 m6 u去重显示文本--uniq% Q* a! I- t2 m/ {  U0 O& d0 H/ x
" i' e) E) m! W/ x$ M
常见用法如下:
8 H3 G" y* Z$ [6 E$ X' g% quniq file  #去除重复的行1 n- T1 P  e( G4 H" s: C
uniq -c file #去除重复的行,并显示重复次数
- g3 t. b7 g& Q# u; P4 Guniq -d file #只显示重复的行5 q! d1 m' e) o
uniq -u file #只显示出现一次的行( I6 N, K( \4 {* |2 K* ^! B* p
uniq -i file #忽略大小写,去除重复的行
% Z* _+ L/ h$ d# s1 v% @/ buniqe -w 10 file #认为前10个字符相同,即为重复
! b7 Q' R+ T9 M( n文本编辑查看--vi$ _# n, t7 e8 V! Y

0 b4 G$ J* E8 I( Z查看文件也很简单:2 T  {; y2 [1 P- `! P
vi file
  S" Q% E2 B; T而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。
& X# e4 H  p# E/ C, g总结  ^% y+ h, j( L7 q4 D$ j

& y0 M* j2 _. X" O( z8 M文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
( W. M* _8 {( ]+ `- X# C7 r

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-7 16:07 , Processed in 0.059894 second(s), 33 queries , Redis On.

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