根据指定的文本模式找到某事

时间:2016-04-01 11:54:21

标签: shell

我有相同的日志文件,如下所示:

B

首先,我使用foreach找到日志

2016-04-01 11:16:30.745:[11878][TEST][test]
2016-04-01 11:16:30.745:[11878][TEST][wait|hold|name(0x03154246) 101ms]
....

然后,我怎样才能得到字段值

grep wait

1 个答案:

答案 0 :(得分:0)

很难弄清楚你写的是什么,但有些东西可能适合你:

#!/usr/bin/env sh

set -e

string=$(grep wait "$1")

value1=$(echo "$string" | rev | cut -d ":" -f 2-  | rev)
value2=$(echo "$string" | grep -o -E "\(0x.+\)" | sed 's,),,' | sed 's,(,,')
value3=$(echo "$string" | grep -o -E "[0-9]+ms]$" | sed 's,ms],,')

echo vaule1: "$value1"
echo vaule2: "$value2"
echo vaule3: "$value3"

用法:

$ ./get.sh LOG

value1是最后一次:

value2是最后(0x)之间的数字。

value3是字符串末尾ms]之前的数字。