截取文本内容:
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
|