服务器常用文本命令cat/tac,more/less,head/tail 文本内容处理命令cut/sort/uniq/wc/join/tr 以及文件目录统计、服务器开销统计命令详解及示例

07-19 1345阅读

一、文本查看常用六个命令cat/tac,more/less,head/tail常用选项

1: 查看整个文件:正向查看/反向查看

cat:cat命令用于查看文件,文件较大时,文本在屏幕上迅速闪过(滚屏),用户会看不清所显示的内容。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏,一般用more等命令分屏显示.另外cat还非常适用于文件内容合并处理。

服务器常用文本命令cat/tac,more/less,head/tail 文本内容处理命令cut/sort/uniq/wc/join/tr 以及文件目录统计、服务器开销统计命令详解及示例
(图片来源网络,侵删)

    -n或-number:带行编号显示; 

    -b或--number-nonblank:和-n相似,但对于空白行不编号

    -s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行

    -A:显示不可打印字符,行尾显示“$”。--show-all 等价于 -vET。

    -E 显示行结束符(LINUX每行的结束符为$符,WINDOWS为$符和换行符(回车符)

    -T, --show-tabs 将跳 字符显示为 ^I

    -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外,中文不会以中文字符串现实。

    -e:等价于"-vE"选项;

    -t:等价于"-vT"选项;

tac:tac命令用于反序显示cat的内容,从行倒序输出文件内容.适用于一些按大小排序的数据反序显示。

    -b, --before             attach the separator before instead of after

    -r, --regex              interpret the separator as a regular expression

    -s, --separator=STRING   指定单元分隔符,而不是换行

2:分屏查看文件内容

more:空格向后翻,可使用b向前翻,h显示帮助,q退出,翻到最后也会自动退出

     输入斜线符 /:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。但无查找到显示

less:空格向后,b向前,pageUP/pageDown也行。翻到最后不自动退出(要自动退出带上-e选项),q命令退出。less也可以/查找

     -l:搜索时忽略大小写的差异; -N:行首显示行号; 

     -s:将连续多个空行压缩成一行显示; -S:在单行显示较长的内容,而不换行显示;

     -x:将TAB字符显示为指定个数的空格字符。

3:查看页面的部分内容

head:用于显示文件的开头的内容,主要选项:-n ,-c

    header -n [行数] filepath 显示开头几行,默认为10行。

    header -c 字符串 filepath 显示开头几个字符,必须指定数字

tail:查看文件末尾的内容,主要使用选项:-n ,-c和head一样。

tail -f 如果要查看一个当前还未创建的文件时可使用: tail -fq s1.log --retry 可以等待文件创建.

tail和head指定-n选项后,数字参数值还可以还+/-符号,

tail带+号表示从第几行开始一直取到最后一行,带-号表示取最后几行,实际就和不带+/-号一样。如tail -n +2就是指从第二行开始一直到最后一行。

head带-号表示从头一直取到最后第几行,带+号表示取前面几行,即和不带符号一样。

所以记住head可以使用减号,tail可以使用加号。

二、文本内容常用简单处理命令

  文本内容常用简单处理命令常用的有剪取cut,排序sort,去重uniq,统计wc,连接join,替换tr

1. Cut命令

  cut:-d指定分割符号,-f取第几列,可以是1-3或1,3。-b :以字节为单位进行分割。-c :以字符为单位进行分割。cut是一个截取命令,非常适合于处理以一个字符间隔的文本内容。就是将一段数据经过分析,cut选取信息通常是针对“行”来进行分析的。cut的所有选项参数

-b :#以字节为单位分割。
-c :#以字符为单位分割。
-d :#自定义分隔符,默认为制表符。
-f :#与-d一起使用,指定显示哪个区域,如-f1,-f1-3,-f3-,-f-3等。
-s : #与-d一起使用,如果加上-s表示只显示有分隔符的行
-n :#取消分割多字节字符。仅和 -b 标志一起使用。对多字节字符如果字符的最后一个字节。

cut命令的语法形式:

cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

 cut常见的用法如下示例:

[root@kermit ~]# cat pass
database:mysql:sqlserver:oracle
country:中国:美国:other
行业:互联网:金融
/home/ftpuser:/bin/bash
hello;yes;test
[root@kermit ~]# cut -d: -f2 pass
mysql
中国
互联网
/bin/bash
hello;yes;test
[root@kermit ~]# cut -d: -f1-2 pass  #还是以原分隔符进行连接
database:mysql
country:中国
行业:互联网
/home/ftpuser:/bin/bash
hello;yes;test
[root@kermit ~]# cut -sd: -f1-2 pass #此处加了-s最后一行就不显示,因为它没有:符号
database:mysql
country:中国
行业:互联网
/home/ftpuser:/bin/bash
[root@kermit ~]# cut -b 1-2 pass #汉字那行直接没有显示
da
co
/h
he
[root@kermit ~]# cut -nb 1-2 pass #-b选项中文就不好用,因为一个汉字占用3个字节(utf8)。
da
co
/h
he
[root@kermit ~]# cut -nb 1-3 pass #此时能完整显示汉字
dat
cou
行
/ho
hel
[root@kermit ~]# cut -c 1 pass   #以字符数来显示,就不用考虑汉字问题了。 
d
c
行
/
h
[root@kermit ~]# 

 队此之外,cut还能接受标准输入,命令示例: cut -d: -f1 - 要退出标准输入,只需ctrl+d即可。

2. Sort 命令 

sort:默认以首字符排序(而且是以字符串排序),常用选项有如下:

    -n表示以数值大小排序,

    -t以什么分开,

    -k以第几列排序,-k后面跟数字表示以第几列排序,同时还可使用1.2这种小数表示以第1列的第2个字符排序。

    -r降序

    -u排序时相同的行只显示一次,即unique.

    -f排序时忽略字符大小写。

    -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; 

    -b:忽略每行前面开始出的空格字符; 默认就使用了此项

    -c:检查文件是否已经按照顺序排序;会返回哪一行没有正确排序。

    -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符; 

    -m:将几个排序号的文件进行合并; 

    -M:将前面3个字母依照月份的缩写进行排序;  

    -o:将排序后的结果存入制定的文件

    -t:指定排序时所用的栏位分隔字符

    +-:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

3.Uniq 命令

uniq只把相邻的重复行过滤,因此执行uniq前需要执行一下sort,其选项如下:

    -d只显示重复的行(只一行),

    -D显示所有重复行

    -c显示重复的次数,uniq可以显示重复行,行号,在每列旁边显示该行重复出现的次数;

    -d或--repeated:仅显示重复出现的行列;

    -f或--skip-fields=:忽略比较指定的栏位;

    -s或--skip-chars=:忽略比较指定的字符;

    -u或——unique:仅显示出一次的行列;

    -w或--check-chars=:指定要比较的字符

4.Join 命令

    Join 命令连接两个文件文件,但前提是有相同意义的列,    join命令一般不常用,不过每个命令肯定都有它的意义,了解了一下发现也挺有意思,也许哪天就真能用到。join适合将一些结构化的文本数据进行整合。前提他们都是多列数据,其中多个文件中有一个意义相同且数据不重复的列,比如一个文件存放着学生的学号和姓名,另一个文件存放着学号和高考分数,这时将这两个文本文件合在一起就可以使用join方法。示例如下:

[root@123 ~]# cat a.txt     #列出a.txt文件内容
1   春天
2   夏天
3   秋天
4   冬天
5   冬去春来
[root@123 ~]# cat b.txt     #列出b.txt文件内容
0   春来天
1   暖 
2   热
3   凉
4   冷 
[root@123 ~]# join a.txt b.txt  #使用join相连,就像mysql的连接一样,默认是内连接,
1 春天 暖 
2 夏天 热
3 秋天 凉
4 冬天 冷 
[root@123 ~]# join -o 1.1 1.2 1.3 a.txt b.txt    #可以指定输出哪些列并指定排序,1/2文件代表文件1/2的第几列。      
1 春天 
2 夏天 
3 秋天 
4 冬天 
[root@123 ~]# join -o 1.1 1.2 2.2 a.txt b.txt   
1 春天 暖
2 夏天 热
3 秋天 凉
4 冬天 冷
[root@123 ~]# join -o 1.1 2.2 1.2 a.txt b.txt   
1 暖 春天
2 热 夏天
3 凉 秋天
4 冷 冬天
[root@123 ~]# join -a1 a.txt b.txt  #就像mysql的左连接,右连接一样。
1 春天 暖 
2 夏天 热
3 秋天 凉
4 冬天 冷 
5 冬去春来
[root@123 ~]# join -a2 a.txt b.txt 
0 春来天
1 春天 暖 
2 夏天 热
3 秋天 凉
4 冬天 冷 
[root@123 ~]# join -a1 -a2 a.txt b.txt 
0 春来天
1 春天 暖 
2 夏天 热
3 秋天 凉
4 冬天 冷 
5 冬去春来
[root@123 ~]# cat a.txt b.txt   #把文件内容换了一下。原来是制表分开,改成=号
1=春天
2=夏天
3=秋天
4=冬天
1=暖
2=热
3=凉
4=冷
[root@123 ~]# join  a.txt b.txt         #直接连接时报错,找不到有序数据
join: file 1 is not in sorted order
[root@123 ~]# join -t '=' a.txt b.txt   #指定以=分开才可以结合在一起。
1=春天=暖
2=夏天=热
3=秋天=凉
4=冬天=冷
[root@123 ~]# cat a.txt     #修改文件内容,使得b.txt中的ID数字不在第一列
1=春天
2=夏天
3=秋天
4=冬天
[root@123 ~]# cat b.txt 
暖=1
热=2
凉=3
冷=4
[root@123 ~]# join -1 1 -2 2 -t '=' a.txt b.txt     #连接时指定每个文件使用哪列判断相等
1=春天=暖
2=夏天=热
3=秋天=凉
4=冬天=冷
[root@123 ~]# join -1 2 -2 1 -t '=' b.txt a.txt    
1=暖=春天
2=热=夏天
3=凉=秋天
4=冷=冬天
[root@123 ~]# join -1 2 -2 1  -o 1.2 2.2 1.1 -t '=' b.txt a.txt  #指定连接哪些列和顺序
1=春天=暖
2=夏天=热
3=秋天=凉
4=冬天=冷
[root@123 ~]# 

5.wc 命令

  wc命令比较简单,就是统计:默认结果,行,单词数,字节数。即对应选项-l,-w,-c,-m字符数,-L最长的一行包含多少字符。wc命令可以接收标准输入(指定结束符EOF,如下:)

[root@123 ~]wc  aaa
> bbbb
> ccccc dd
> EOF
 3  4 18
[root@123 ~]

6.tr 命令

tr 命令用于字符串替换,注意tr是对逐字符进行操作的。常用选项有如下:

    -d或——delete:删除所有属于第一字符集的字符;

    -c或——complerment:取代所有不属于第一字符集的字符;可以认为和-d相反。

    -s或--squeeze-repeats:把连续重复的字符以一个字符表示;

    -t或--truncate-set1:先删除第一字符集,以第二字符集替换,位数不对以第二字符集最后的补位。

tr命令使用示例如下:

[root@123 ~]# echo 'KEEP smiling!' | tr 'a-z' 'A-Z'    #自定义集合,也可以使用'rewqr{]'
KEEP SMILING!
[root@123 ~]# echo 'KEEP smiling!' | tr 'Es' '1'
K11P 1miling!
[root@123 ~]# echo 'KEEP smiling!' | tr 'KEEP' '1'  #tr并不会把KEEP当一个字符串来进行整体替换    
1111 smiling!
[root@123 ~]# echo 'KEEP smiling!' | tr -s 'a-z' 'A-Z'  #-s把相同的E用一个替换。
KEP SMILING!
[root@123 ~]# echo 'KEEP smiling!' | tr -d 'h-l'    #-d进行删除
KEEP smng!
[root@123 ~]# echo 'KEEP smiling!' | tr -d E
KP smiling!
[root@123 ~]# echo 'KEEP smiling!' | tr -s 'e'
KEEP smiling!
[root@123 ~]# echo 'KEEP smiling!' | tr -s 'E' 
KEP smiling!
[root@123 ~]# echo 'KEEP smiling! 1234 ok' | tr -d -c '0-9' #-c选项删除不在-c指定的范围内的字符,挺有用。即-c反转字符范围。
1234[root@123 ~]# 
[root@123 ~]# 
[root@123 ~]# echo 'KEEP smiling! 1234 ok' | tr -d -c '0-9\n' #注意区别,不把换行删除。
1234
[root@123 ~]# echo 'KEEP smiling! 1234 ok' | tr -t 'KEP' 'EP'   #-t的作用示例
EPPP smiling! 1234 ok

其它tr可以直接导入文件,使用

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]