文本查看¶
命令汇总
0x00 cat¶
cat
命令会读取文本所有内容输出到标准输出上
$cat -E 1.txt # 输出文本内容时,显示行结束符$
$cat --show-ends 1.txt # 效果同上
$cat -v 1.txt # 显示非打印符
$cat -e 1.txt # 效果等同于-vE
$cat -n 1.txt # 显示每行按顺序编号
$cat -s 1.txt # 将多个连续的空白行合并显示一个空白行
0x02 head¶
head
命令会读取文件的首部内容输出到标准输出上
$head 1.txt # 显示1.txt的前10行
$head -n 20 1.txt # 显示1.txt的前20行
$head -c 30 1.txt # 显示1.txt的前30个字节
0x03 tail¶
tail
命令会读取文件的尾部内容输出到标准输出上
$tail 1.txt # 显示1.txt的尾部10行
$tail -n 20 1.txt # 显示1.txt的尾部20行
$tail -c 100 1.txt # 显示1.txt的尾部100个字节
$tail -f 1.txt # 当文件内容增加时,同步输出到标准输出上;常用来监控日志
0x04 more¶
more
命令支持读取文件的全部内容,然后分屏显示;但是该命令只支持向后翻屏,当翻到文件尾部时不支持向前翻
$more 1.txt # 分屏显示1.txt文件内容
$more +10 1.txt # 从文件的第10行开始分屏显示
使用more
命令分屏查看时可以用到的快捷键有:
h
、?
:查看可以使用的快捷键q
:退出more文档space
:向后翻一屏enter
:向后翻一行v
:用vim打开当前文件=
:打印当前行数:f
:打印当前文件名和行数.
:重新执行上次快捷键
0x05 less¶
less
命令类似于more
命令,读取文件全部内容,然后分屏显示;不同的是,less
命令支持前后翻屏。我们通常查看命令帮助使用的man文档
就是使用less
命令打开的
$less 1.txt # 分屏显示1.txt内容
使用less
命令分屏查看时可以用到的快捷键有:
h
、H
:查看可以使用的快捷键q
、:q
:退出less文档enter
:向后翻一行y
:向前翻一行space
:向后翻一屏b
:向前翻一屏d
: 向后翻半屏u
:向前翻半屏/pattern
:向后模式匹配?pattern
:向前模式匹配&pattern
:只显示被模式匹配到的行n
:向模式匹配的方向查看匹配内容N
:向模式匹配相反的方向查看匹配内容g
:跳转到文件首行G
:跳转到文件末行
0x06 wc¶
wc
的全称为word count
,该命令用来做字符数统计的
$wc # 等待标准输入内容,按两次ctrl+d提交,显示行数,单词书和字节数
$wc -l 1.txt # 统计行数
$wc -w 1.txt # 统计单词数
$wc -c 1.txt # 统计字符数
0x07 tr¶
tr
命令是用来转换或删除字符;但是该命令不能接受文件作为参数,只能接受字符作为参数,所以必须使用命令管道进行参数传递,因为管道传递过来的是字符流。其语法格式:tr [options] SET1 [SET2]
options常用选项
- 不使用任何选项且SET1和SET2都存在则表示将SET1的内容转换成SET2中对应的内容;转换规则是:SET1中第n个字符转换成SET2中对应的第n个字符,如果SET2的长度小于SET1,则重复SET2中的最后一个字符来补足其长度
-d
:删除SET1匹配到的内容,此时没有SET2-s
:压缩SET1匹配到的内容,此时没有SET2SET1/SET2都是字符串,它们支持的形式有
\\
\b
:删除符\n
:换行符\r
:回车符\t
:制表符\v
:垂直制表符CHAR1-CHAR2
:例如0-9就是从0到9[:alnum:]
:所有字母和数字[:alpha:]
:所有字母[:blank:]
:所有水平留白[:cntrl:]
:ctrl字符[:digit:]
:所有数字[:graph:]
:所有可打印字符,不包括空格[:lower:]
:所有小写字母[:print:]
:所有可打印字符,包括空格[:punct:]
:所有标点符号[:space:]
:所有垂直留白和水平留白[:upper:]
:所有大写字母[:xdigit:]
:所有十六进制数
# 字符转换
$echo 12345 | tr '0-9' '9876543210' # 将12345转换成87654,输出到标准输出上
$cat 1.txt | tr '\t' ' ' # 将1.txt文件中的制表符转换成空格,输出到标准输出上
$cat /etc/issue | tr 'a-z' 'A-Z' # 将/etc/issue中的所有小写字母转换成对应的大写字母,输出到标准输出上
# 字符删除
$cat 1.txt | tr -d '0-9' # 删除1.txt文件中所有数字,输出到标准输出上
# 字符压缩
$cat 1.txt | tr -s 'a' # 将1.txt文件中的连续a(例如:aaaaa)压缩成一个a,输出到标准输出上
0x08 sort¶
sort
命令将会对文件行内容进行排序,然后输出到标准输出上
常用的选项有:
-f
:排序时忽略大小写-b
:排序时忽略前导空白符-n
:按照指定数字段的大小对文本文件进行行升序排序-t
:后面紧跟字符,指定行分隔符-k
:后面紧跟数字,指定分隔后进行比较字段-u
:重复的行,只显示一行-d
:按字典序进行排序-r
: 逆序排序
$sort /etc/passwd # 默认通过比较行首字符在ASCII表中的次序对文本文件进行行升序排序
$sort -n -t: -k3 /etc/passwd # 以:作为分隔符分隔每行内容,按照第3段(数字段)的大小进行升序排序
$sort -rbd 1.txt # 忽略像空格之类的前导空白字符,按照字典进行降序排序
0x09 uniq¶
uniq
命令用来移除重复的行(只有连续的相同行才是重复行,不连续的相同行不是重复行),所以通常和sort
命令配合使用,因为只有排序后才能保证相同的行是连续的
$sort 1.txt | uniq # 消除重复的行
$sort 1.txt | uniq -s 10 -w 10 # 消除重复的行,从第10(-s)个字符开始往后比较10(-w)个字符,如果相同则为重复的行
$sort 1.txt | uniq -c # 统计每一行出现的次数
$sort 1.txt | uniq -d # 仅显示出现次数至少两次的行
$sort 1.txt | uniq -u # 仅显示不重复的行