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

 找回密码
 立即注册

手机扫一扫,访问本页面

开启左侧

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

[复制链接]
admin 发表于 2020-6-28 13:05:01 | 显示全部楼层 |阅读模式
前言
/ y0 F5 D7 Z3 w( g) k
$ `4 l! ]% F( n) h7 P$ M# _Linux常用命令中,除了cat还有很多其他用于文本查看的命令。本文将简单介绍一下这些文本查看的命令。4 X% J* e- ~$ ~& G# g: r- o( x
全文本显示--cat
9 J/ t0 |8 N0 d7 {: u, p2 w0 v. o$ F' S2 p
cat可能是常用的一个文本查看命令了,使用方法也很简单:
: \; T1 i( m# V* ?cat file  #全文本显示在终端# a$ U, N: X& {* B8 y
cat -n file #显示全文本,并显示行号' V5 a& V# Q$ l# `. P3 W2 x
另外,cat也可用作合并文件:- O: V; q- A" Y) j4 e5 M) S$ q
cat file1 file2 >file3; {. p* A5 N! F: F$ _' N/ }0 v
该命令将file1 file2的内容合并写到file3中。* z+ J! N9 I: I& A/ p) P# {$ _
倒序显示全文本--tac& g' r# s+ u" L# e0 S
) @- m% j7 B8 y! h2 Z' O1 R
tac是cat倒过来的写法,tac以行为单位,倒序显示全文本内容。
9 c0 d6 m: U; a8 B& ~! |tac file0 v8 r8 J2 U4 Y
分页显示文本--more
* k/ K2 T" ~  t  J* p
" Z+ |. m. p* b4 f9 n" ^0 B% g; Gcat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。: Y2 c6 V  ^1 r0 G0 o
1.显示内容
* L/ N0 n. ?) W
more file
* B" o+ e4 A6 J2 J之后,就可以使用按键来查看文本。常用按键如下:
1 s, M$ x, K6 M. x- o6 \回车    #向下n行,默认为1行
0 {) m# y8 c. ?6 I空格    #向下滚动一屏6 b. q2 v0 o+ J8 \! z
b      #向上滚动一屏6 j7 v# Q5 U* ?! ?
=      #输出当前行号6 h, f7 |' ], _% F1 l! E* Q
:f     #输出当前文件名和当前行号/ d5 k7 {  D% H8 d/ m7 H
q      #退出9 y6 t3 l6 C: o$ E2 E" {' C
2.从指定行开始显示
: g0 U6 C9 L7 P  I3 umore +10 file. E0 o7 N0 P( @& J
该命令从第10行开始显示file的内容。
' i# a7 ^7 p/ E( H5 e4 L$ T# n1 w3.从匹配的字符串行开始显示
2 T" V* H! K. Nmore +/string file
  B) _, o" p5 a. w  k& J该命令从有string的行的前两行开始file的内容。6 p( Q' Z% B8 \! M) {( k
任意浏览搜索文本--less
- E$ x! h- O5 }( Z6 d
9 h6 ~' h1 o& ?5 L) o  ^7 Xless命令的基本功能和more没有太大差别,但是less命令可以向前浏览文件,而more只能向后浏览文件,同时less还拥有更多的搜索功能。! O! m& [3 V0 R, o. ?/ P
常见使用方法:

& _: E' C- M* C) Kless file     #浏览file, s+ Z. I3 e' o
less -N file  #浏览file,并且显示每行的行号
! p: d: a. A4 R. sless -m file  #浏览file,并显示百分比
& r6 D$ g1 r8 D常用按键如下:4 ~6 G  r$ O' r0 D3 w, y9 p0 P
f        #向前滚动一屏
; V& V1 J2 f3 ]b        #向后滚动一屏  [! s2 t& K% i  _
回车或j   #向前移动一行
* v$ ^$ N* \( f0 Yk        #向后移动一行+ }3 r' @% X% m( ^
G        #移动到最后一行' F! H7 @. `. Q
g        #移动到第一行$ l. Q+ \( X  F  J1 x
/string  #向下搜索string,n查看下一个,N查看上一个结果/ d- p  U, V- Q* k) z5 W( X
string #向上搜索string,n查看下一个,N查看上一个结果
) h; U/ S' C; b* R; k" dq    #退出; e" B  n2 Z' i
相比more命令,less命令能够搜索匹配需要的字符串。
* S% O* K- H0 _; ?! x" [另外,less还能在多个文件间切换浏览:
% U; f6 j/ n0 ?: h2 I! L
less file1 file2 file34 c* n8 b6 t6 K3 [7 d1 r
:n     #切换到下一个文件
9 D1 E% K& m  w- R:p     #切换到上一个文件4 h3 |" Z+ e2 E! s! g; [: V8 I9 K
:x     #切换到第一个文件, n! S. A0 Z& T0 X
:d     #从当前列表移除文件) w$ P5 L1 w( I7 M
显示文本头部内容--head/ t- B! a$ t% x' t
% K, D9 W( I2 X
head命令的作用就像它的名字一样,用于显示文件的开头部分文本。
/ J, h5 ?' ]# \常见用法如下:

$ c& S4 U+ }2 Q0 |: g4 a8 B* Yhead -n 100 file #显示file的前100
3 O, x! h: }! T2 }. l9 c3 Qhead -n -100 file #显示file的除最后100行以外的内容。  3 t# q2 j/ r  l- P1 b+ B
显示文本尾部内容--tail
. h8 F8 a7 J/ x8 h: e! C" j
) s  o2 J, a  h" @7 L和head命令类似,只不过tail命令用于读取文本尾部部分内容:4 L" _! G, k6 O. I4 N3 [
tail -100 file  #显示file最后100行内容
; l2 K& s6 ~3 y3 N( O% Atail -n +100 file  #从第100行开始显示file内容   3 u) ]* V! z# A) e
tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:+ {0 h7 |1 q: z8 o( d" r+ o
tail -f logFile
) m8 P5 X" D* U对于更新的日志内容,会实时打印到终端上,方面查看实时日志。! _" }% B: J6 l! ?: B
指定顺序显示文本--sort
( y/ v5 I, D  S7 O( s  q; `( I+ X
( o+ G9 u8 Y: N8 ^1 Y, bsort可用于对文本进行排序并显示,默认为字典升序。( w) ~. ?* ?3 c7 Z. l8 G
例如有一段文本test.txt内容如下:

: `# }( }( E$ f! }6 wvim6 o( Q0 h7 u' u( v; [4 y; Y
count
/ @; q8 q6 c! Q' k: b" Z& gfail2 r7 P, K# B# f
help' }9 ^% T0 R" Z& U( H5 I
help1 f# R) ]6 |/ `% n4 p7 @
dead5 I6 B+ q# Y  U3 G# F% m
apple( X! e7 B  Q# v2 u3 ]8 O. j  S9 B
1.升序显示文本4 H) b5 Y2 x) e! {
使用命令:
5 T9 j2 @$ |( X" ]1 Q
sort test.txt& j" Z/ {. P: p* q
apple
* t  m9 F3 N, J7 {/ wcount2 Z. L8 h  R6 C2 g/ z
dead
( t! [/ P4 @! m  @2 q( xfail% u) T1 u# f0 Y+ q
help
9 W9 }7 t; G2 Ehelp6 [# [8 O) r8 a/ O
vim7 }3 ?- u3 C1 P2 b
文本内容将以升序显示。% R7 O# c4 Y! W" q" p, ^2 n
2.降序显示
6 U+ d, n3 _, J8 {. P1 [3 |3 z相关参数-r:

7 @% t2 A2 U- k4 I; U9 isort -r test.txt4 z8 z- }4 N2 P5 e1 k6 a6 a# R
vim
( ?9 u  G) N" qhelp' g/ M5 K, ^: u5 ?& c4 |
help
. x. B3 U0 @: w1 d' Yfail
) M& g. F- V2 y, G9 a1 D* Q, ndead
( ^6 P+ ^) H# }& P% mcount2 ], |& C3 \- M8 `2 G/ b
apple
1 P! J4 Y+ u, X+ U4 I1 {3.去掉重复的行& c8 @5 \- F" ^, y
我们可以观察到,前面的help有两行,如果我们不想看到重复的行呢?可以使用参数-u,例如:

5 c9 ~1 x& G# v/ v4 H  n" Jsort -u test.txt
# O( N' j- ?+ @apple
0 a. Z# }1 ^  F( `2 Y8 scount; J7 T& N6 c" L
dead
  u* X" M2 p- ]1 M: Vfail' [* f2 A- K' _& I
help( {! a6 ]9 d$ Z- m, G- ?
vim
" P% N$ k  v" j可以看到help行不再重复显示。) f& G2 ]/ V1 h: x0 w& E
4.按照数字排序
% o0 q% S/ p7 R# {* l) E# V$ `8 Q如果按照字典排序,10将会在2的前面,因此我们需要按照数字大小排序:
$ @: L7 @5 \7 G. J! P9 @' R2 W
sort -n file
5 b+ Y  V2 w& X; g6 k由于本文篇幅有限,不在本文展开介绍,后续将单独介绍sort命令的妙用。
; f8 X2 L( o& X$ z7 b  N过滤显示文本--sed. t; ^" ^- }; s/ Q: [7 t

$ m9 @3 p& G( o1 t: e: l( j) a7 lsed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。5 X3 y1 f7 N5 k
1.显示匹配关键字行) S: C) Z* I- a* G. o0 X" F
有时候查看日志,可能只需要查看包含某些关键字的日志行:

! H/ E1 }- N/ ?& B$ ?# n& j! S3 ased -n "/string/p" logFile- r; d. s8 S2 d, v1 t" E' ]3 e( [
上面的命令表示打印包含string的行。0 \3 X4 b) L3 {. |! s, v
2.打印指定行$ e+ ]/ S- U$ t% {0 |% X- \5 E: o
sed -n "1,5p" logFile #打印第1到5行
$ U9 t5 M8 G, T0 ?/ |7 {$ Msed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
6 j$ a1 \: U, z8 \$ P+ ysed -n "10p" logFIle  #打印第10行
" a1 z: g  U/ X  c4 _( p& s去重显示文本--uniq
2 a( `' t  p8 q" q- e% t2 i' g3 k8 M# h8 |/ A( P
常见用法如下:* w  |. u5 H  s3 F
uniq file  #去除重复的行8 B* E0 T! i4 \' k+ M; H+ Q3 x
uniq -c file #去除重复的行,并显示重复次数% o- g% s  A( L" \" N/ {
uniq -d file #只显示重复的行' L- p2 h5 A  m* {
uniq -u file #只显示出现一次的行
, r* ~0 k( p% N& y" Q; _; wuniq -i file #忽略大小写,去除重复的行3 L3 l8 S+ S! b# |* R
uniqe -w 10 file #认为前10个字符相同,即为重复" m6 l# s" `+ j) H. h, L/ N
文本编辑查看--vi0 j/ |6 p3 g; p2 q  C
6 O- ?0 r% E8 H) t" \7 K- G
查看文件也很简单:# ?4 ~$ E  I- b" ~3 E- U6 y
vi file
6 u& t- `  x0 R/ L而从vi发展出来的被誉为编辑器之神的vim有着更加强大的功能,这里不作展开。, ?& ?4 N. T! |9 n0 P8 q
总结; \, h- O+ y9 Z# s

/ v4 x4 E3 c1 O$ D0 J# V! B; a( s0 C文本查看命令较多,可根据使用场景不同选择使用不同的命令。有些命令的用法较多,本文仅介绍经典用法,更多用法可使用man命令查看。很多命令可以结合其他命令使用,例如ps -elf|more,分页显示进程信息等等,更多用法可自行探索。0 c: _0 |3 a" [/ `0 T

微信扫一扫,分享更方便

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 09:39 , Processed in 0.092826 second(s), 32 queries , Redis On.

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