linux过滤字符串命令

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 08:04   26   0

截取文本内容:

 ACT:heartbeat;TIMESTAMP:1556084456;STATIONID:172692;STATUS:0;
 ACT:heartbeat;TIMESTAMP:1556084456;STATIONID:172692;STATUS:0;ORDERLIST:||0,||0,||0,||0,||0,;

1、从一段文本中过滤不包含某些字符串的命令:

tailf file |grep -v '不包含的字符串'

2.1、使用awk从一段文本中只截取几个字符过滤出来显示命令:

这段的意思是从心跳里过滤出不包含ORDERLIST的所有文本,同时从过滤出来的文本里以分号作为分隔符 只显示含有STATIONID的那列。

tailf heartbeat.txt|grep 'ACT:heartbeat;' |grep -v 'ORDERLIST' |awk -F ";" '{if($3~/^STATIONID/) print $3}'

awk命令介绍:

awk基本语法为:awk [-F] "field-operator" 'comand' inputfiles,-F和field-operator一起使用,field-operator是域分隔符,如果不使用-F选项,则默认的域分隔符为空格。后面command命令一般需要用一堆“{}”括起来,然后进行必要的操作,比较全面一点的command命令'{if($1~/^A/) print $1}',翻译一下这个命令就是,如果第一列($1)里面有匹配(~)正则表达式(/^A/)的话,那么就输出(print)到标准输出。需要注意的是,条件必须要用一堆"()"括起来,正则表达式需要用“//”括起来。当然,完全可以不要条件匹配,可以直接输出指定列,如'{print $1}'

2.2、使用cut从一段文本中只截取几个字符过滤出来显示命令:

tailf heartbeat.txt|grep 'ACT:heartbeat;' |grep -v 'ORDERLIST' |cut -d ";" -f 3

-d ";" 表示以分号为分隔符。

-f 1 表示取分割后的一个域。

3、cut另一个字符截取用法,可以结合按域分割后截取想要的字符:

echo "hello" |cut -c 2 ---->会输出e

echo "hello" |cut -c 2,3 ---->会输出el

echo "hello" |cut -c 2- ---->会输出ello

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP