正则表达式(awk、sort 、uniq 、tr 工具)

   日期:2024-12-27    作者:cdftxs 移动:http://oml01z.riyuangf.com/mobile/quote/75018.html

正则表达式(awk、sort 、uniq 、tr 工具)

awk 选项 ‘模式或条件{编辑命令}’ 文件1 文件2…. //过滤并输出文件中符合条件的内容
awk -f 脚本文件 文件1 文件2… //从脚本中调用的编辑指令,过滤并输出内容

awk包含几个特殊的内建变量(可直接用)如下所示

FS:指定每行文本的字段分隔符,默认为空格或制表位
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数
$0:当前处理的行的整行内容
$n:当前处理的行的第n个字段(第n列; FILENAME:被处理的文件名
RS:数据记录分隔,默认为 ,即每行为一条记录。

1、按行输出文本

输出所有内容,等同于cat test.txt

awk ‘{print}’ test.txt

输出所有内容,等同于cat test.txt

awk ‘{print $0}’ test.txt

输出第1~3行内容

awk ‘NR1,NR3{print}’ test.txt

输出第1~3行内容

awk ‘(NR>=1)&&(NR<=3){print}’ test.txt

输出第1行,第3行的内容

awk ‘NR1||NR3{print}’ test.txt

输出所有奇数行的内容

awk ‘(NR%2)==1{print}’ test.txt

输出所有偶数行的内容

awk ‘(NR%2)==0{print}’ test.txt

输出以root开头的行

awk ‘/^root/{print}’ /etc/passwd

输出以nologin结尾的行

awk ‘/nologin$/{print}’ /etc/passwd

统计以/bin/bash结尾的行数,等同于grep –c “/bin/bash$” /etc/passwd

awk ‘BEGIN {x=0};//bin/bash$/{x++};END {print x}’ /etc/passwd

5.1.11统计以空行分隔的文本段落数
awk ‘BEGIN {RS=””} ;END{print NR}’ test.txt

2、按字段输出文本

输出每行中(以空格或制表符分隔)的第三个字段

awk ‘{print $3}’ test.txt

输出每行中第1,3个字段

awk ‘{print $1,$3}’ test.txt

输出密码为空的用户的shadow记录

awk -F ”:” ‘$2==””{print}’ /etc/shadow

输出密码为空的用户的shadow记录

awk ‘BEGIN {FS=”:”} ; $2==””{print}’ /etc/shadow

输出以冒号分隔且第7个字段中包含/bash的行的第一个字段

awk -F ”:” ‘$7~”/bash”{print $1}’ /etc/shadow

输出包含8个字段且第一个字段中包含nfs的行的第1,2个字段

awk ‘($1~”nfs”)&&(NF==8){print $1,$2}’ /etc/services

输出第七个字段既不为/bin/bash也不为/sbin/nologin的所有行

awk -F “:” ‘($7 != “/bin/bash”)&&($7 != “/sbin/nologin”){print}’
/etc/passwd

3、通过管道、双引号调用Shell命令

调用wc –l命令统计使用bash的用户的个数,等同于grep –c “bash$ ”

/etc/passwd
awk -F: ‘/bash $/{print | “wc -l”}’ /etc/passwd

调用w命令,并用来统计在线用户数

awk ‘BEGIN {while (“w” | getline) n++ ; {print n-2}}’

调用hostname,并输出当前主机名

awk ‘BEGIN {“hostname” | getline ; print $0}’

sort是一种以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序

用法:sort命令的语法为“sort [选项] 参数”

其中常用的选项包括一下几种

选项作用-f:忽略大小写-b:忽略每行前面的空格-M:按照月份进行排序-n:按照数字进行排序-r:反向排序-u:等同于uniq,表示相同的数据仅显示一份-t:指定分隔符,默认使用[TAB]键分隔-o<输出文件>:将排序后的结果转存至指定文件-k:指定排序区域

将/etc/passwd 文件中的账号进行排序,默认是按首字母顺序排序

 

第三列是数字,倒序排列

 
 

uniq工具在Linux系统中通常与sort命令结合使用,用于报告或者忽略文件中的重复行
-c:进行计数
-d:仅显示重复行
-u:仅显示出现一次的行

 
 
 
 

tr命令常用来对来自标准输入的字符进行替换、压缩和删除
tr具体的命令语法格式为:tr [选项] [参数]
-c:取代所有不属于第一字符集的字符
-d:删除所有属于第一字符集的字符
-s:把连续重复的字符以单独一个字符表示
-t:先删除第一字符集较第二字符集多出的字符,做替换

1.将大写字母转换成小写字母

 

2.压缩输入中重复的字符

 

3.删除字符串中的某些字符


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号