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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
- i( I, o2 q" Q$ m8 i* ^5 t& \6 Y* B4 `1 |
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。6 W. H3 ~, h' H
全文本显示--cat+ J4 {0 _4 n3 C) ]3 J' I

5 s5 U! O+ U* B( ?$ Fcat可能是常用的一个文本查看命令了,使用方法也很简单:
) {: h* u1 d7 w7 v2 \7 Lcat file  #全文本显示在终端) f% _9 ^4 `2 ?/ i/ }. n8 D( ~
cat -n file #显示全文本,并显示行号
; c, ^# X* b; P' ?7 P另外,cat也可用作合并文件:$ M7 |# R6 P% S
cat file1 file2 >file3) L% I; d: P1 X' q8 |: i
该命令将file1 file2的内容合并写到file3中。$ r  n5 j* \/ w: H/ m% [
倒序显示全文本--tac5 C5 _! j7 U0 o# O; z
, f7 o+ f7 V4 Z2 |& V& U
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
* l- e; A4 O0 ?: g# Ttac file
, H, B7 X( U0 j; v" {2 j分页显示文本--more
1 r$ [, B& P- S& ]3 c% N
8 l$ B. j7 J7 D; {cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。. T1 O' b$ t2 k7 O
1.显示内容
: q- E2 ^% J- A- y9 E
more file
) L+ _& _9 b& k& @之后,就可以使用按键来查看文本。常用按键如下:) c  _" o' P) U$ ?- e- B
回车    #向下n行,默认为1行( d# N% `# a9 D3 n! z. |+ |% F
空格    #向下滚动一屏
: _* P8 _2 j3 \% M# P# m1 Tb      #向上滚动一屏
% W' `8 W0 p* l4 j. s=      #输出当前行号
# o: U3 d7 Y3 M, }8 N6 h: ]:f     #输出当前文件名和当前行号* V( y( i/ P9 [( A
q      #退出7 W: z$ V+ a4 a' l; r
2.从指定行开始显示: D1 P, c; ^1 A( u! x) ^; E5 v
more +10 file; [4 J' {* r7 Z
该命令从第10行开始显示file的内容。
- G" F0 [# g1 h6 j, n3.从匹配的字符串行开始显示# n6 G# B( Q: j. d! r
more +/string file9 T+ c' g5 f* P( r$ w, S
该命令从有string的行的前两行开始file的内容。  a. S  D$ L! ]  [2 M0 S* W
任意浏览搜索文本--less% k. r$ G8 F, O8 k
4 |  @4 L5 t" X
less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。
/ p, r. L" K0 S7 s常见使用方法:
( s% X* J$ l! c0 n$ c" I
less file     #浏览file
% P$ w( I) t9 G' {3 v( N; z4 c. pless -N file  #浏览file,并且显示每行的行号
  A0 T* d* {  q$ T) `$ Uless -m file  #浏览file,并显示百分比4 f" U: A2 }) ~
常用按键如下:
: E3 V! U1 k  z1 g9 b. M4 l0 wf        #向前滚动一屏& v3 m! {8 ~) T
b        #向后滚动一屏  Z; n$ @8 y$ v( C; _. x
回车或j   #向前移动一行
' A  b+ Z9 W  S0 Yk        #向后移动一行6 W" ~' \& Z0 @4 V' D4 e4 i
G        #移动到最后一行4 X6 C' o. l6 D! X% V8 ~  c& J
g        #移动到第一行  O/ [8 @7 h/ S; u: F
/string  #向下搜索string,n查看下一个,N查看上一个结果! a9 h# X. y% ]1 M. ?
string #向上搜索string,n查看下一个,N查看上一个结果; c; A" d& w+ x5 Y5 S' F& _
q    #退出% P% r4 W9 x! S$ |/ u
相比more命令,less命令能够搜索匹配需要的字符串。
4 F& v: f" y( `! Y* l( s  C另外,less还能在多个文件间切换浏览:
: n8 B1 @# o7 U8 f" l2 ?# ]
less file1 file2 file37 u/ O8 w6 ~  {: j8 I2 _& @
:n     #切换到下一个文件5 l4 P- x7 M: ?5 T
:p     #切换到上一个文件1 |. A' Q7 c8 f
:x     #切换到第一个文件
& F* L# d: l4 o" O$ a:d     #从当前列表移除文件! H& N6 @/ F* j1 ]: T# ]
显示文本头部内容--head
- q. P2 h; H+ p+ Y
' ?) T2 ^2 N3 R% I8 Fhead命令的作用就像它的名字一样,用于显示文件的开头部分文本。
  t7 I) m, e* Z$ O$ Z% A常见用法如下:
4 z! \% L) i: E+ [7 q9 R$ B
head -n 100 file #显示file的前100
$ y# h# J. ^  {5 `head -n -100 file #显示file的除最后100行以外的内容。  & Q1 y' c/ Q) H6 X# D; u
显示文本尾部内容--tail% T( L4 W, p- i1 O4 ~' ]8 k
7 D5 H% X! ?: E! O/ E1 q" }9 d
和head命令类似,只不过tail命令用于读取文本尾部部分内容:7 L& }  O9 c" X5 F% R
tail -100 file  #显示file最后100行内容% O! S" g2 I# B- k  _. E/ O
tail -n +100 file  #从第100行开始显示file内容   
  m. z/ y4 w  qtail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
% l3 z; |( \) g  U2 }+ \; ^: |5 Otail -f logFile
; r. t+ e! S3 l& U5 ?5 I- ]9 a对于更新的日志内容,会实时打印到终端上,方面查看实时日志。
9 r0 K- F9 h; b: x$ s6 J4 {1 {: i指定顺序显示文本--sort- a' b9 k( p8 y) y5 |

2 {& a) H6 `1 q" |7 R9 t! i+ O  W! _: isort可用于对文本进行排序并显示,默认为字典升序。
: n$ r, B. r: E( r例如有一段文本test.txt内容如下:

& A6 Y! \) l3 gvim
) ~7 d- e& G0 T3 E3 S& Z3 Z, mcount
8 \0 y5 b! {7 u3 z1 cfail0 L6 Q2 b! Q5 z; t
help$ C( w( U7 k! U6 n) {- @3 W8 C
help
' T1 t6 U6 J0 V6 l! ~dead
+ U, [9 T2 r1 L8 zapple/ N% n% c0 x0 Q7 i5 v4 I6 z
1.升序显示文本& ?5 P3 z: x$ C% x* l1 `2 q3 R$ g0 Y
使用命令:

) l' t7 K; Z" c* n9 ~- g6 |sort test.txt
- _3 l+ ]  y0 P3 G3 D- Mapple
3 @0 F; d# p6 R5 O0 v& {count
1 j( B  o" C% Vdead, s6 e" f0 F) D- d- w& b
fail
4 ^# h2 ~9 D& @9 s1 nhelp
: m+ F7 W, o! R/ uhelp
8 r& }; z( r  _" V9 I* Tvim8 h$ K) J0 i; C! p/ v
文本内容将以升序显示。
' i3 X% h6 \) l2.降序显示
& R) y" B* D; z) l8 p2 |7 V: C5 f相关参数-r:

4 i! f) n, N$ p+ {# v% \3 }sort -r test.txt
5 a0 [! e& ]7 c. D0 V' Svim
" W  f( |1 i/ G/ @help: m7 B$ x! J9 b  O7 i' n, l) H
help
3 {+ e* ]2 B, H, X2 j1 D2 sfail
5 w" R7 O5 Y: f! H& jdead
- n$ s5 j2 ]5 i4 |  H" Ecount5 Q7 F( T% W3 ?2 S( N' |, m0 P( E
apple2 G3 |  s) ~/ S' _3 [
3.去掉重复的行7 M3 j* ~: ^$ R# v/ j( {
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

6 J3 n6 z7 \$ O3 }+ i, L# D" M" Ysort -u test.txt
( y0 H) n# r" U  Wapple
3 h1 U  E, A* w3 B$ I' H; I- ycount6 B) _: d7 S3 r# _
dead) W# P3 n. a/ A  x8 |# k
fail3 V% M. N& U0 p7 ^  h: z" m
help3 s3 h- s$ m- Y- J
vim
* a* S" `9 E8 h# _可以看到help行不再重复显示。
" \" c8 w6 D; Y7 B1 ?! h: O4.按照数字排序  s4 V% \: t7 I; Y9 s/ {6 J
如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:

: c' L: t( t/ b9 x% {sort -n file7 B7 N' d8 h" w) q8 a0 |5 [/ E
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。+ y# [- Q, x: R5 G- e4 E
过滤显示文本--sed
( K  R7 y* @5 B/ G+ x5 r. ]  l8 g2 q/ ], K$ n4 b
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。  k/ h" [( D/ v) s5 L
1.显示匹配关键字行) f# f0 z# W! h  X
有时候查看日志,可能只需要查看包含某些关键字的日志行:
  f( Q" v- O+ y8 ]3 v) M
sed -n "/string/p" logFile
3 u: `* Q- T  W; N+ ]7 P上面的命令表示打印包含string的行。1 `8 t' T# P/ w3 j" i) f1 q3 z
2.打印指定行8 _$ P! ^+ k0 s4 e/ r9 c
sed -n "1,5p" logFile #打印第1到5行
* D: Q# R9 R( z7 Q; jsed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
$ |2 t3 h; }1 tsed -n "10p" logFIle  #打印第10行
7 I$ T9 ~" L0 R) h- W2 k# a$ C去重显示文本--uniq  Y  `+ I* I' K# [
' M) i' }/ W/ c) c
常见用法如下:
" k4 S( Y: ~7 R8 ^# ^6 puniq file  #去除重复的行% Q4 r( z4 Z" w$ t! G7 a
uniq -c file #去除重复的行,并显示重复次数
# L+ o/ y! a& e4 g/ W  Xuniq -d file #只显示重复的行2 ]8 S  |1 n8 [0 f
uniq -u file #只显示出现一次的行
* w* ~5 B& n1 w+ Nuniq -i file #忽略大小写,去除重复的行2 l, f- I0 X/ Z7 G4 Y* _
uniqe -w 10 file #认为前10个字符相同,即为重复4 f. _* U% {; Z1 ^* i
文本编辑查看--vi8 N0 c( |; X8 N$ s% [: D

2 T! u3 J  T9 S2 g查看文件也很简单:
2 Y' U3 [1 z  Q! a( m7 z: ]vi file0 v8 V3 [$ \) }9 |& P
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。+ q. o* L2 \  Z! T
总结( B; L2 `' o8 S9 }3 N0 E0 T# y
" B/ J6 N& P- s* ]! ]) _
文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
+ V$ D, h* f/ N, {7 Y6 a

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-16 23:30 , Processed in 0.066327 second(s), 32 queries , Redis On.

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