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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言, f; e: Y" ~9 `) A. w2 s
5 O0 h0 R. P  A1 y1 G
Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。
$ g, ?# j/ R- O! M8 p) E全文本显示--cat+ U, k) F) B9 Y" L

/ Q: l& B) p1 N2 l9 w3 V9 bcat可能是常用的一个文本查看命令了,使用方法也很简单:: @" \& t% Y4 E+ R7 G3 n
cat file  #全文本显示在终端
0 O$ ?1 h9 K. Y; ]cat -n file #显示全文本,并显示行号$ U( G4 |* R7 F+ c1 [, ^
另外,cat也可用作合并文件:$ o, `% G! J7 \7 V  m
cat file1 file2 >file3  i# R6 O7 N. |! ~
该命令将file1 file2的内容合并写到file3中。
+ X' {$ Y+ M0 _. Q, t, u倒序显示全文本--tac6 ?' r& P  T! u3 ~8 d6 B
; @  }  n* I/ B8 ~' B4 m/ w
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。4 Q" m5 c) m! M* k) f
tac file
0 W0 Z3 ~; {( \0 J  P# \分页显示文本--more
/ s' w% L& l% D
0 `3 f% F# W; D2 k2 x+ ~cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
( Y( O7 N& M4 ]& ]# x8 z1.显示内容
7 {0 ?3 o1 w: H; M! E
more file& @1 R+ J$ u5 V0 v
之后,就可以使用按键来查看文本。常用按键如下:- M5 d% `$ z" ]1 V, p' L% k3 l4 Z
回车    #向下n行,默认为1行
! F3 m3 e' f1 M$ R空格    #向下滚动一屏
% P$ y% M% v# H: v$ |b      #向上滚动一屏
/ a8 I3 O- L) {( Q1 P=      #输出当前行号
" k* g+ D! p/ X$ m2 ?:f     #输出当前文件名和当前行号
7 a; M  F, @; W% R( C7 t8 W. zq      #退出
, S- _1 c/ `' K: }. o2.从指定行开始显示, G# y. U2 K# l# m) h# t
more +10 file6 x- h4 h% V* }- z$ @8 y0 R
该命令从第10行开始显示file的内容。
6 i; S0 d, W5 }+ N8 x% ?& B( ?! G1 m$ k3.从匹配的字符串行开始显示
1 }3 l4 s% l9 Q( @/ U) hmore +/string file2 }* m# i2 N5 r; A
该命令从有string的行的前两行开始file的内容。
5 r3 g, C+ g; R% ^, P8 B任意浏览搜索文本--less7 j0 a, f2 ^# b7 v+ `3 P8 T" {) @5 ?

" g- d( K) h: X6 |% T. p  G& Qless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。. n( m+ s' d) ]% Q
常见使用方法:
, E; W4 f: V+ o) Z: W
less file     #浏览file7 g+ Q  r4 V8 M( |- U( \! u1 ]
less -N file  #浏览file,并且显示每行的行号5 D$ U+ @! g+ `  \$ j
less -m file  #浏览file,并显示百分比
! g4 H: P! f. l常用按键如下:
5 A7 m' a. ?: @f        #向前滚动一屏
/ A: V# @7 M7 @; Z& ]# d) Sb        #向后滚动一屏
; w0 Q- _1 u# S回车或j   #向前移动一行$ M& @, V, M' v3 ~
k        #向后移动一行
) K" @& u7 T4 F5 P  U5 a0 J; DG        #移动到最后一行
! v8 T9 q6 ?8 f1 D$ C! g8 _; m) |9 ug        #移动到第一行
% ]1 n) }1 v& d9 m- x/ F/string  #向下搜索string,n查看下一个,N查看上一个结果! j+ D1 P- q- X
string #向上搜索string,n查看下一个,N查看上一个结果
6 {( @$ n" G. M1 O' k2 b, S1 dq    #退出2 b' ]& P. H8 G1 z3 N" V4 ~. Q
相比more命令,less命令能够搜索匹配需要的字符串。
7 i1 d) }! ^) j另外,less还能在多个文件间切换浏览:

. w3 ]& L6 _7 G, s% Cless file1 file2 file3
% I1 ]3 b' g6 Y- K+ O:n     #切换到下一个文件
" H) ~# `, H8 N  i:p     #切换到上一个文件
# o8 C2 d; N" p6 r- ^, u:x     #切换到第一个文件8 |: p% p" [( y: Y4 z1 B+ N
:d     #从当前列表移除文件
3 K, \7 I; {( |显示文本头部内容--head
- b! f  _0 W8 W7 L- K
' W; c1 b. j1 l: Fhead命令的作用就像它的名字一样,用于显示文件的开头部分文本。
& H; q( K  v2 i$ R2 O6 |2 L# k常见用法如下:
5 g; h, U2 P# i! L1 S
head -n 100 file #显示file的前100
7 A% H% Q+ A# D* I, F6 ghead -n -100 file #显示file的除最后100行以外的内容。  # d# U4 {9 e0 m: E/ a
显示文本尾部内容--tail
; I4 a$ U# Z9 R6 O/ H2 c2 ]2 S5 y
和head命令类似,只不过tail命令用于读取文本尾部部分内容:% {, t  N- b1 _& c0 S( T
tail -100 file  #显示file最后100行内容5 U$ T6 c- C0 g8 c) F* W& {
tail -n +100 file  #从第100行开始显示file内容   
& m, y# u6 c, N/ |+ xtail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:* ?) _* T/ S: l# ~% y
tail -f logFile
) a, [# B3 y5 J( c  ]1 l. K- |# L0 u对于更新的日志内容,会实时打印到终端上,方面查看实时日志。- W. ~; {. `1 m- C1 l2 ]
指定顺序显示文本--sort
; W& I" H5 q7 ?6 l% [/ G; y
& w/ W3 W  B: l5 B; d; O5 M9 i7 vsort可用于对文本进行排序并显示,默认为字典升序。
7 H1 F7 G& i9 C2 s例如有一段文本test.txt内容如下:
" h5 \4 s/ S" \
vim( ]4 A) p6 R+ R( C0 C; e) ^
count
( b+ ^$ J7 q( U/ l* u7 B$ \) ~fail
, ^! L* x# g0 I& r+ P9 n3 Xhelp
# O9 g7 p: q# G6 y+ D6 khelp
" Z, Y% b; S# ]- }2 cdead
) G4 p' W# M3 S$ eapple
# I& r' e$ m* V9 x/ F# L: r1.升序显示文本% d$ k. a1 p% s, K  B. F
使用命令:

( t: S7 k' m# u/ R7 q! ^# O& Dsort test.txt
( D3 ~0 }1 W) sapple
/ m, {, h# U6 t/ H8 Qcount
5 R0 i4 W1 d- u* e* g, }dead
4 D' ^% E2 I" Y% K/ R& M( b. jfail
5 n1 ], y" H: L! x" v3 Dhelp
- z* J. p0 ]8 ?# M% M' R4 t5 ehelp
0 m# m! b- u1 `- @, E7 t7 Z. gvim- e: O# d1 V0 w# a
文本内容将以升序显示。
0 f+ N* {( i5 s2.降序显示4 N: {& I8 i4 U, U( B% N
相关参数-r:
# O7 c' D1 T: H9 n
sort -r test.txt4 Y9 J; z4 `+ w- ?0 o; p
vim: h  Y! b* Z+ n8 q
help
8 k4 D. P- _) e6 N4 u  Chelp; k! d/ k- T6 M# v2 F
fail  r/ [5 C  q1 G7 Y8 p" S2 X! ]! H
dead
. h1 C* G6 Z- x, i: [; Scount. E# u0 {4 h3 x( G* B# l# r5 G0 {) b
apple7 F8 @7 v( P) S: Q
3.去掉重复的行- g! _% f2 S" U! x: T, C0 o2 r
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:
- ~7 i, D8 \, n/ z3 d. T+ M
sort -u test.txt
- H9 O: p2 D! J# J/ j3 [apple" ~5 ^$ ?# D4 m
count3 |) z- o/ \' M! c9 o
dead4 ~& B2 l( q/ c5 K& G! ~1 g) i& L
fail3 F, N6 v2 O6 |& t! z2 Z$ P" t
help; T4 @8 ~% x! f. q
vim
& {4 Q$ ^! ~6 t7 b5 r) F9 T可以看到help行不再重复显示。
; B, t) p2 L- O& m4.按照数字排序
( o" A1 [  y6 ~% v如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
2 G# o& N+ G' D& {& g; _
sort -n file
; ^7 k/ [( O+ V: R- c+ v8 V1 V由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。; ~/ Y- c; E' r: X7 n
过滤显示文本--sed
  ~) F! ~. N6 c+ v: f! |7 H; U$ z. |" X6 `% w. f
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。8 K4 E! B0 P' _( [. V! b5 T) Q
1.显示匹配关键字行) {1 J- u1 f1 X4 D
有时候查看日志,可能只需要查看包含某些关键字的日志行:
' Y  ^- |2 D; o+ G9 t* _
sed -n "/string/p" logFile4 d( L  G8 I( A& F9 Q; `
上面的命令表示打印包含string的行。$ Z0 O1 q( \! x3 D8 O
2.打印指定行
/ X1 F& s* g5 k" h2 qsed -n "1,5p" logFile #打印第1到5行. `# I8 H8 C. A' x
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号  N- r! I- C& w8 f
sed -n "10p" logFIle  #打印第10行- i. i9 Z2 U* ?; m( z! ?5 K
去重显示文本--uniq6 Z! L7 \0 ~; m* }9 j

' r# l/ d9 i! c0 @, x! \5 `常见用法如下:: \/ Z/ K* B# K& `) t
uniq file  #去除重复的行
: R2 J( W# ^5 i3 _' x+ {uniq -c file #去除重复的行,并显示重复次数
$ X5 v- `: N) a8 Y( I+ J* w$ I! uuniq -d file #只显示重复的行
  Q/ p  m; H$ l- A2 x7 Z4 funiq -u file #只显示出现一次的行
; s& u- B) ]9 x) N, N" |uniq -i file #忽略大小写,去除重复的行0 ?5 I( e# d+ `$ y
uniqe -w 10 file #认为前10个字符相同,即为重复/ ]! o- \' J8 W& ^
文本编辑查看--vi& {0 R( X. R' H/ Q

2 W( m, D2 x2 h- p查看文件也很简单:
: t( s: z% l, q- }% ^vi file' H) P! M4 }, u5 Q7 w; Q2 z2 c3 d
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。5 I2 K5 N# O/ M. _; `3 h# h
总结$ i+ b: w: `! v$ z! H

4 T/ y7 e8 m# Y% c& u- s文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。' m& F. c/ ~& X7 f5 b1 I& M

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-26 18:08 , Processed in 0.085158 second(s), 31 queries , Redis On.

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