linux过滤字符串命令

截取文本内容:

 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值