linux 脚本学习指南--8 单词过滤器和模式匹配运算符

本文深入探讨Shell脚本中tr命令的高级应用,包括字符转换、删除和替换,以及如何结合其他命令如cat、sort和uniq进行文本处理,实现文本过滤、排序和去重。此外,还介绍了环境变量的管理,模式匹配运算符的使用,为读者提供了实用的Shell编程技巧。

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

  1. export 用于修改或打印环境变量
  2. readonly则使得变量不得修改
  3. env  -i  临时修改环境变量,-i是初始化,也就是摒弃
  4. unset 用来删除变量和函数        unset -v 删除多个变量         unset -f 删除函数
  5. ${varname:=word} 如果varname不是空返回值,为空的话就设置va rname=word      :=常用来设置默认值
  6. ${varname:?message}.  如果varname非空则显示值,为空的话显示varname:message    :?常用来捕捉变量未定义导致的错误
  7. ${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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值