Linux cat tac more less head tail sort sed uniq

全文本显示—cat

cat可能是常用的一个文本查看命令了,使用方法也很简单:

  1. cat file #全文本显示在终端
  2. cat -n file #显示全文本,并显示行号

另外,cat也可用作合并文件:

  1. cat file1 file2 >file3

该命令将file1 file2的内容合并写到file3中。

倒序显示全文本—tac

taccat倒过来的写法,tac以行为单位,倒序显示全文本内容。

  1. tac file

分页显示文本—more

cat将整个文本内容输出到终端。那么也就带来一个问题,如果文本内容较多,前面的内容查看将十分不便。而more命令可以分页显示。

1.显示内容

  1. more file

之后,就可以使用按键来查看文本。常用按键如下:

  1. 回车 #向下n行,默认为1行
  2. 空格 #向下滚动一屏
  3. b #向上滚动一屏
  4. = #输出当前行号
  5. :f #输出当前文件名和当前行号
  6. q #退出

2.从指定行开始显示

  1. more +10 file

该命令从第10行开始显示file的内容。

3.从匹配的字符串行开始显示

  1. more +/string file

该命令从有string的行的前两行开始file的内容。

任意浏览搜索文本—less

less命令的基本功能和more没有太大差别,但是**less**命令可以向前浏览文件,而**more**只能向后浏览文件,同时less还拥有更多的搜索功能。
常见使用方法:

  1. less file #浏览file
  2. less -N file #浏览file,并且显示每行的行号
  3. less -m file #浏览file,并显示百分比

常用按键如下:

  1. f #向前滚动一屏
  2. b #向后滚动一屏
  3. 回车或j #向前移动一行
  4. k #向后移动一行
  5. G #移动到最后一行
  6. g #移动到第一行
  7. /string #向下搜索string,n查看下一个,N查看上一个结果
  8. string #向上搜索string,n查看下一个,N查看上一个结果
  9. q #退出

相比more命令,less命令能够搜索匹配需要的字符串。
另外,less还能在多个文件间切换浏览:

  1. less file1 file2 file3
  2. :n #切换到下一个文件
  3. :p #切换到上一个文件
  4. :x #切换到第一个文件
  5. :d #从当前列表移除文件

显示文本头部内容—head

head命令的作用就像它的名字一样,用于显示文件的开头部分文本。
常见用法如下:

  1. head -n 100 file #显示file的前100行
  2. head -n -100 file #显示file的除最后100行以外的内容。

显示文本尾部内容—tail

head命令类似,只不过tail命令用于读取文本尾部部分内容:

tail -100 file  #显示file最后100行内容
tail -n +100 file  #从第100行开始显示file内容

tail还有一个比较实用的用法,用于实时文本更新内容。比如说,有一个日志文件正在写,并且实时在更新,就可以用命令:

tail -f logFile

对于更新的日志内容,会实时打印到终端上,方面查看实时日志。

指定顺序显示文本—sort

sort可用于对文本进行排序并显示,默认为字典升序。
例如有一段文本test.txt内容如下:

$ vim
count
fail
help
help
dead
apple

1.升序显示文本

使用命令:

$ sort test.txt
apple
count
dead
fail
help
help
vim

文本内容将以升序显示。

2.-r—降序显示

相关参数-r

$ sort -r test.txt
vim
help
help
fail
dead
count
apple

3.-u—去掉重复的行

可以观察到,前面的help有两行,如果不想看到重复的行,可以使用参数-u,例如:

$ sort -u test.txt
apple
count
dead
fail
help
vim

可以看到help行不再重复显示。

4.按照数字排序

如果按照字典排序,10将会在2的前面,因此需要按照数字大小排序:

sort -n file

过滤显示文本—sed

sed是一个流编辑器,功能非常强大,但本文只介绍文本查看相关功能。

1.显示匹配关键字行

有时候查看日志,可能只需要查看包含某些关键字的日志行:

sed -n "/string/p" logFile

上面的命令表示打印包含string的行。

2.打印指定行

sed -n "1,5p" logFile #打印第1到5行
sed -n '3,5{=;p}' logFile #打印3到5行,并且打印行号
sed -n "10p" logFIle  #打印第10行

去重显示文本—uniq

常见用法如下:

uniq file  #去除重复的行
uniq -c file #去除重复的行,并显示重复次数
uniq -d file #只显示重复的行
uniq -u file #只显示出现一次的行
uniq -i file #忽略大小写,去除重复的行
uniqe -w 10 file #认为前10个字符相同,即为重复

文本编辑查看—vi

查看文件也很简单:

vi file