files=/tmp/test/log
cat $files | tr A-Z a-z | tr -c a-z\' '\n' | sort -u
第二个管道的步骤是将大写字母转成小写,第三个管道是以换行自负取代非字母自负,最后排序去重让每一行都为唯一值
- tr. 从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备
- -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
- -d, --delete:删除指令字符
- -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
- -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
- --help:显示程序用法信息
- --version:显示程序本身的版本信息
单词出现频率过滤器
#! /bin/sh
#从标准输入读取文本流,再输出出现频率最高的前n个单词列表,默认值为25个
#附上出现频率的技术,按照这个计数由大到小排序
#输出到标准输出
#语法:
tr -cs A-Za-z\' '\n' | #将非字母字符置换成换行符号
tr A-Z a-z | #将所有的大写字母转为小写
sort | #由小到大排序单词
uniq -c | #去除重复并显示其计数
sort -k1,1nr -k2 | #计数由大而小排序后,再按照单词由小而大排序
sed ${1:-25}q #显示前n行,默认25
- export 用于修改或打印环境变量
- readonly则使得变量不得修改
- env -i 临时修改环境变量,-i是初始化,也就是摒弃
- unset 用来删除变量和函数 unset -v 删除多个变量 unset -f 删除函数
- ${varname:=word} 如果varname不是空返回值,为空的话就设置va rname=word :=常用来设置默认值
- ${varname:?message}. 如果varname非空则显示值,为空的话显示varname:message :?常用来捕捉变量未定义导致的错误
- ${varname:+word} 如果varname非空返回word,为空的话返回null :+常用来测试变量是否存在
模式匹配运算符
path=/home/tolstuy/mem/long.file.name
${path#/*/} ==>#匹配开头处,删除最短部分 /tolstyy/mem/long.file.name
${path##/*/} ==>匹配开头处,删除最长部分。 long.file.name
${path%.*} ==>匹配结尾处,删除最短部分 /home/tolstuy/mem/long.file
${path%%.*} ==>匹配结尾处,删除最长部分/home/tolstuy/mem/long