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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言9 b! n2 ~' z5 k

4 G% {9 @. P$ JLinux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。
1 k( m1 f3 W! H全文本显示--cat
: Z/ ?* g6 o0 W- F' `6 |# o( `4 t% g# q, {; \0 J7 h
cat可能是常用的一个文本查看命令了,使用方法也很简单:2 y2 J+ m& U5 e$ o# q9 s) m  l
cat file  #全文本显示在终端9 I7 k* M0 b8 x; _0 L
cat -n file #显示全文本,并显示行号# x7 f9 R* }3 e: k% }- z9 D
另外,cat也可用作合并文件:
0 @0 P. r. d2 \. b- scat file1 file2 >file3
( E% W, s/ s6 F. `7 X& H; j该命令将file1 file2的内容合并写到file3中。( F1 M# i3 C, l7 a
倒序显示全文本--tac
1 b0 Y- V' s& T9 t* U. R5 ?- u: {2 D' p; }  n. M# d2 C
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
* A+ Y: r9 E& [, R' Dtac file
$ G7 k% e. J- ?3 n7 T& }分页显示文本--more. u0 S, X/ \9 y

  S: a0 ]6 w  m/ zcat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。
' i3 T7 L/ E0 Z1.显示内容
# `9 q" J$ }" t3 A3 p. [
more file, `9 T8 A+ s1 m. O/ M
之后,就可以使用按键来查看文本。常用按键如下:
# S1 {3 J, M& Q6 S# c& K回车    #向下n行,默认为1行) a4 K2 K! ?( F6 \3 T* u
空格    #向下滚动一屏$ P0 B8 E  O% T
b      #向上滚动一屏
3 R5 x2 h- k: B! \! s* b=      #输出当前行号
2 w8 V& ~+ a3 k:f     #输出当前文件名和当前行号
9 k: }. g. s+ r# zq      #退出$ ]  l1 }, Q6 E5 H: }* a
2.从指定行开始显示0 u$ G' H7 U; M- u) Z9 M; C( X
more +10 file2 ~' S# K; F( q
该命令从第10行开始显示file的内容。
) @& K3 |7 @) K( j2 a$ m$ l3 A- X* S3.从匹配的字符串行开始显示1 ~+ ?& I8 }2 i7 N% t/ D7 x
more +/string file
* @; r3 o. a  h5 _$ @+ x该命令从有string的行的前两行开始file的内容。
( A( M3 R4 i; a* y' J- K任意浏览搜索文本--less
; a0 i4 ]7 ^0 f! i$ W; _# ?& a* g( u# F; k. Q6 i
less命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。
) X) c! L- W( [( e+ T5 E常见使用方法:

; f( P8 n6 z0 }: U" ]& gless file     #浏览file- l: G% K4 N5 P
less -N file  #浏览file,并且显示每行的行号3 u! W9 ^2 @  T$ F; U, `
less -m file  #浏览file,并显示百分比
  W& b+ W+ e6 ?( o3 V; `6 j常用按键如下:! D! ?) d8 m1 a+ V* Y$ Q- z3 t2 s
f        #向前滚动一屏! D" l7 Y/ [% p# z3 T! N
b        #向后滚动一屏
1 b4 G. U# ^! }( z+ V2 r回车或j   #向前移动一行
: j% ~2 W: {- W# Q" Qk        #向后移动一行
  `, ?- I4 ?+ \. ]) ?6 ~G        #移动到最后一行" X1 R% b5 f- r$ s; V4 z3 A8 e
g        #移动到第一行
& H6 ]$ d: N. X3 t7 {' V/ v% m3 p/string  #向下搜索string,n查看下一个,N查看上一个结果" P0 ?. q  r2 @
string #向上搜索string,n查看下一个,N查看上一个结果5 T5 ^$ @; T: E& Y; w' @0 `. z
q    #退出
6 K( r2 O0 q6 p; c相比more命令,less命令能够搜索匹配需要的字符串。6 ]$ p( d0 L/ Z' A3 `7 T$ i
另外,less还能在多个文件间切换浏览:
9 P. h0 {- [- T8 t* d, h5 o
less file1 file2 file30 Q8 e- c' C6 }  S8 U1 {6 P
:n     #切换到下一个文件% r# k* G$ }- s" ]% p$ U
:p     #切换到上一个文件
' I" {# O; d# z8 d, U:x     #切换到第一个文件% M$ u' _6 B! R  A( d: o
:d     #从当前列表移除文件
+ ?% w5 o) U7 R6 N显示文本头部内容--head
" O6 }1 y5 I" Q9 h4 r; A- I4 d- @' k8 R3 ]- f7 o) Y  \
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。
- y6 ]7 ]1 j- _" @  H7 k常见用法如下:
6 s2 u* ~' E0 D# X9 E
head -n 100 file #显示file的前100
4 Z& q! I7 y: }+ \& e8 Shead -n -100 file #显示file的除最后100行以外的内容。  
! q5 ?+ o, q' W显示文本尾部内容--tail
, r# Q5 m" r2 e! X
, k3 A# ?) T  ?和head命令类似,只不过tail命令用于读取文本尾部部分内容:
: v! Q0 n9 ^0 J! P5 r5 ?2 Ftail -100 file  #显示file最后100行内容
% R, Q/ }" B+ x& i5 Ntail -n +100 file  #从第100行开始显示file内容   # c0 a# \) g: X7 ^" D  U- X9 g; J
tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:
- @7 r6 G9 `: `: r$ e! ntail -f logFile
( B+ _2 W! _$ i对于更新的日志内容,会实时打印到终端上,方面查看实时日志。
- x4 n; l% {' V* J( P: K" P" z1 s指定顺序显示文本--sort
  G( b/ `# I: w; J' s
! x: ]% J0 ]% i4 F4 M  Z* [sort可用于对文本进行排序并显示,默认为字典升序。
2 j  i; z' V9 h5 r0 z# H例如有一段文本test.txt内容如下:

/ r# t/ b5 F/ K+ t3 Kvim% j% w: I7 A' Y( b: D4 c
count$ \* p7 p. T% K4 a/ Y
fail: E; c& z  _# L& E+ N
help! l5 F( n  B+ C2 C. n
help
" [2 `. m, f  x3 K: ?5 Jdead
$ a& [4 d8 }! K: u9 Z4 yapple
+ F+ l! A# x/ K! B5 J) K- j) p: g1.升序显示文本5 A9 }2 q; Q8 }) C, j6 l. b  t. [
使用命令:

4 W; v1 u, L* K3 _" Tsort test.txt
. {: h) S, L) S0 i, w, Uapple
/ Q6 d+ |' T9 _count8 U' @& b" |# P( W( }# ~8 x
dead6 e; I0 [- z3 }& C# k* ~+ Q% K& s
fail
% g  E( v$ `- n; a7 Whelp2 S) d, Q+ e( t) T' C) p7 g) D
help
; u. }# b# z; c( P' v* E0 Jvim, g/ c" _  x/ ]
文本内容将以升序显示。
7 @: N) _( T1 v+ b2.降序显示
' T8 K  F9 k" ]相关参数-r:
1 G  `$ s/ g- E, ^8 K5 [
sort -r test.txt
* F: |: i* g5 _! P' S; R) S2 Nvim
1 X4 C' L/ D  y" N; _5 c4 Thelp# j3 Z+ ~2 b$ o# g/ t* C
help
+ a: P9 `* V: ~" q! k0 C5 tfail
, K9 M; i/ t: H' Q# q2 pdead& R  r2 d& e9 l2 o) T
count! h0 S6 e2 S! f# y' h
apple+ [# a, ^) _$ v  p
3.去掉重复的行
+ H( k$ N2 \, m* H2 Y8 W1 e/ A我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

% _) e% k1 l0 K1 Y, e* xsort -u test.txt! b) h6 M! K) H$ O- R( b$ S5 V! @
apple
. g$ P4 O: g8 i% |1 p' @count" S. C* s- f1 h9 y# F  c1 e
dead
9 F. _& P2 W) E- _, Ffail1 a# k$ {' J3 l, J. x" ?+ B% t$ ?
help
" K5 h5 ~& r# D: Cvim
7 C* F9 c7 ]$ q) c$ c. y, _9 J可以看到help行不再重复显示。
  ?3 F! K1 S5 e) y7 x) f: K! V4.按照数字排序
9 d6 G0 C. _% F如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
0 f, M& L1 ~3 U+ s3 G, P
sort -n file1 @5 W' j' \/ K
由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。3 y0 D- x" m  M) G! A/ C- k- q
过滤显示文本--sed+ ~1 z8 @- s% o6 {( [  @( ]! s
- U2 B: ?0 y/ B& C9 d1 t
sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。7 b2 d7 E- U3 p7 N, |7 C) F- Y
1.显示匹配关键字行; a" W  S1 J% h8 \4 g( D
有时候查看日志,可能只需要查看包含某些关键字的日志行:

& Z5 r, e! @: ^. ksed -n "/string/p" logFile1 ]$ W1 C5 _3 ~# P- K
上面的命令表示打印包含string的行。
6 t% _. P- b2 e! b% J5 l4 ~: v2.打印指定行8 Z4 Y* v2 f& z) s2 Y7 v
sed -n "1,5p" logFile #打印第1到5行* G7 b; r0 A$ w% {* B" J
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号/ I$ R* M' l* V5 h8 |
sed -n "10p" logFIle  #打印第10行% {, p5 C, c8 j+ O
去重显示文本--uniq- h  k( I2 {# C) y# s5 m
3 W+ k5 _( H5 X* A
常见用法如下:
- \6 g9 _: m) `% ouniq file  #去除重复的行
( l& y7 X$ i- A9 q2 S! G- B7 [uniq -c file #去除重复的行,并显示重复次数8 ]4 Y, d0 |1 \. p; C
uniq -d file #只显示重复的行; q% `7 K8 Q* w- l
uniq -u file #只显示出现一次的行
0 Q% J/ v8 W+ A! n$ i% \% I- v6 }7 ?uniq -i file #忽略大小写,去除重复的行( r4 r+ D' ?# W8 w
uniqe -w 10 file #认为前10个字符相同,即为重复
9 N3 W( b  t/ [文本编辑查看--vi
! v+ c0 y" I% a/ X, {  g  g2 G% c: s7 W, H# B4 X: X" C' z
查看文件也很简单:
6 n: X4 [9 h/ y! ?+ G* c' X* j# lvi file% h% j, s' ^9 h8 F. q
而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。4 {: }, z5 {  M" F# e4 m, T
总结
2 K5 |2 G  e4 m( y$ s
) v; c+ r! l( c0 x* C& G* M" K文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。
/ R, K6 Y8 K. `1 N

微信扫一扫,分享更方便

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 08:51 , Processed in 0.060822 second(s), 44 queries , Redis On.

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