我有一个日志文件,我想编写一个bash脚本以将信息从该日志解析到另一个.txt文件。我在如何允许用户选择所需的特定文本方面遇到了麻烦。
我的日志文件包含:
06 May 19 03:40:35 3 abCodeClearTrap Error Clear Trap (agent: 12367a12, chassis:12367a12, ErrIdText: ERROR ID TEXT, csssi: EXTIFG, clearedID: 0x089088394)
06 May 19 03:44:35 3 abCodeErrorTrap Error Trap (agent: 12368a15, chassis: 12368a15, ErrIdText: Skip this item, csssi: SSRSSR, clearedID: 0x089088394)
说用户要解析日期,时间,座席,清除和ErrIDText。 到目前为止,我已经写过
file="home/docs/abc.log"
parse_log_data(){
while read line ; do
date=$( awk -F: '{print $1, $2, $3}' )
clock=$( awk -F: '{print $4}' )
id=${ awk -F : '{print $5}' )
agent=$( grep -o 'agent[^"]*' )
Clear=$( grep -o 'Clear[^"]*' )
errIdText=$( grep -o 'errIdText[^"]*' )
我不确定我所做的是否正确,对您的帮助将不胜感激。 预先感谢。
答案 0 :(得分:0)
尝试一下。在#2行上,只需用echo
替换您要使用这些变量的内容即可。
while IFS=, read date clock id agent errid clear; do
echo $date $clock $id $agent $errid $clear
done < <(
gawk -v OFS=, '{
match($0, /agent: ([^,]+).*ErrIdText: ([^,]+).*clearedID: ([^)]+)/, a)
print $1 FS $2 FS $3, $4, $5, a[1], a[2], a[3]
}' home/docs/abc.log
)