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

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

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

> 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可以直接导入文件,使用<号导入,如cat a A < /etc/passwd,导入文件 还可以删除文件的空格:cat a.txt | tr -d ' ' 如要去掉换行再加上反斜线n即可。 tr在字符替换上,功能很强大,还有很多字符类可以使用,如下列表:

SETs are specified as strings of characters. Most represent themselves.

Interpreted sequences are:

\NNN character with octal value NNN (1 to 3 octal digits)

\\ backslash

\a audible BEL

\b backspace

\f form feed

\n new line

\r return

\t horizontal tab

\v vertical tab

CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order

[CHAR*] in SET2, copies of CHAR until length of SET1

[CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0

[:alnum:] all letters and digits #字母和数字

[:alpha:] all letters #字母

[:blank:] all horizontal whitespace #空白

[:cntrl:] all control characters #控制(非打印)字符

[:digit:] all digits #数字

[:graph:] all printable characters, not including space #图形字符

[:lower:] all lower case letters #小写字母

[:print:] all printable characters, including space #可打印字符

[:punct:] all punctuation characters #标点符号

[:space:] all horizontal or vertical whitespace #空白字符

[:upper:] all upper case letters #大写字母

[:xdigit:] all hexadecimal digits #十六进制字符

[=CHAR=] all characters which are equivalent to CHAR

 关于上面的两个空白,如下操作示例,后者会将换行去掉(即包含垂直方向的空白字符),这也就是这两个字符集的区别。

#cat a.txt | tr -d '[:blank:]' 和 cat a.txt | tr -d '[:space:]'

    在字符替换上还有一个很强大的命令sed,和tr不同的是,sed也是按行操作的。而tr是按字符操作的。sed去除每行前空格示例:

sed 's/^[[:space:]]*//' a.txt

#或者:

sed 's/ //g' a.txt 

三、常用文件目录统计命令

统计目录文件个数: ls | wc -l 统计目录及子目录总文件个数:ls -R | wc -l 搜索文件名并统计个数: ls | grep '.lua' | wc -l 统计文件夹的大小: du -s 或者 du -sh 将文件夹下目录和文件按大小排序:du -sk * | sort -n 如当前文件大小差不多可使用du -sh 查看某文件或目录大小: du -sh name  统计当前文件夹下文件的个数: ls -l |grep "^-"|wc -l 统计当前文件夹下目录的个数: ls -l |grep "^d"|wc -l 统计当前文件夹下文件的个数,包括子文件夹里的:ls -lR|grep "^-"|wc -l 统计文件夹下目录的个数,包括子文件夹里的:ls -lR|grep "^d"|wc -l

四、常用服务器开销统计命令:

1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10

2.内存消耗最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -10

3.虚拟内存使用最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k5|head -10

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: