本文共 1687 字,大约阅读时间需要 5 分钟。
在上节中,变量值定义时,提到特殊符号。
在shell中,特殊符号有特别定义,需要在变量声明时需要脱义。下面列举出一些特殊符号:* 号 :在命令中提到过,通配符,表示0++个任意字符。?号:匹配符,任意一个字符。# 号:注释符,表示该行为注释行。$号:可做变量名前,表示取变量值。也可 表示行结束符。!号:主要是用于历史命令调用。可用 "set -H"取消。~ 号:主要用于路径描述,表示家目录。; 号: 命令行结束。| 号:管道符。\>,\>\>,<,<<,号:输入输出重定向符。& 号:后台运行符。&> 表示文件正确描述符和错误描述符都指向同一个文件。|| 和&& 号:命令逻辑运算。|| 表示“或”,前后命令 逻辑取反。&&表示“与”,前后命令逻辑要一致。[]和{}在 命令中,有介绍。
前面提到命令的输出,通过管道符,可以导入文件中,也可导入命令。
常用来做为后面命令的输入处理的对象。这里列举一些文本文件处理命令,作为管道符的导入命令。
- cut命令:以一行 为单位处理对象,进行文本的分隔,显示,不会修改原文件。cut 以参数 -d 指定分隔符,-f 指定显示的段号。如
head -2 /etc/passwd | cut -d ":" -f 1
cut 以参数 -c NUM 指定显示特定位置字符。需要注意的是 cut 分隔符不能有效的处理以多个空格为分隔符。另外cut显示段号写法,如:-f 1-4, -f 1,3
sort 排序:将文本对象每一行当成一个对象,进行行数重排。
默认以首个字符开始按ascii码排序。
以参数-n 指定以数字排序,此时其它字符作为0进行排序处理。另外 sort 也可对行进行分隔(参数 -t 分隔符),然后指定按相应的段进行排序(参数 -kn1,n2 )。如:sort -t: -k3 -n /etc/passwd
反序排列(-r):sort -r /etc/passwd
另一个较常用参数(-u),去重排列。排列时,如果多行相同,那么只显示一行。
uniq:去重,常和sort排序一起,
注意的是,sort排序去重,不能统计重复个数。uniq 可通过参数 (-c) 统计重复次数。
uniq 指定的重复是相邻的行重复。如果重复行有间隔,那么不会按重复计算。
wc : 统计,
uniq是统计行重复,wc 常用来统计不重复的字符,行数。
参数(-l):统计行数。参数(-c) :统计字符个数,注意包括所有的字符,如换行符。参数(-w) :统计所有的单词数。
tee 多重输出
在命令输出重定向时,默认只能向一个文件 进行输出。
但有时在保存到文件 时,又需要查看输出内容。此时,可用tee命令,将命令输出到文件 和标准输出对象--屏幕上。如:last|head -2 | tee last.list
会在当前目录下创建last.list文件,写入命令结果,并显示在屏幕上。
tr 字符替换
将显示的内容中 指定特定的字符 替换为其它字符。
注意只能替换字符 。如小写换为大写:who | tr '[a-z]' '[A-Z]'
也可删除字符。 如删除字符 :who | tr -d 'oo'
也可删除 相邻重复字符:echo "hiiii2233455546"|tr -s [i,2-6]
以上都是以行为单行处理文本,split 主要用来将文件分割成大小相等的多个文件 。
以行为分割单位:split -l 10 /etc/passwd
参数(-b) 以byte为单位分割文件,注意分割后文件默认是以"x..."开头。可指定文件前缀。如:split -b 50 1.txt abc
将1.txt分割成50字节大小文件 ,以abc为前缀。又如:split -l 10 /etc/passwd pd
分割为以pd为前缀的文件。
3333333
转载于:https://blog.51cto.com/sincethen/2333149