【发布时间】:2014-01-25 01:11:35
【问题描述】:
我正在尝试编写一个 shell 脚本来从日志的 grepped 行中解析值:
<WhereIsTheCar - the car with id number 'Sys Generated. VARIABLESTRING 1111' is driving to: Canada>
<WhereIsTheCar - the car with id number 'Sys Generated. VARIABLESTRING 2222' is driving to: Mexico>
<WhereIsTheCar - no car could be found with the following ID number: 'Sys Generated. VARIABLESTRING 3333'>
我已经找到了这些行并创建了一个数组。然后,我希望获得类似于以下内容的输出:
Canada
Sys Generated. VARIABLESTRING 1111
Mexico
Sys Generated. VARIABLESTRING 2222
Not Found
Sys Generated. VARIABLESTRING 3333
诚然,我不擅长编写 shell 脚本,但我想出了一种有点“蛮力”的方法来获得我想要的值:
i=0
for line in "${grep[@]}"
do
loc[i]=`sed -e "s/.*\:\(.*\)>/\1/" <<< $line | sed -e "s/^[ \t]*//" -e "s/[ \t]*$//" -e "s/^\([\"']\)\(.*\)\1\$/\2/g"`
echo ${loc[i]};
id[i]=`sed -e "s/^.*\'\(.*\)\'.*$/\1/" <<< $line | sed -e "s/^[ \t]*//" -e "s/[ \t]*$//" -e "s/^\([\"']\)\(.*\)\1\$/\2/g"`
echo ${id[i]};
let i++
done
我在哪里创建位置和 id 数组,然后尝试修剪掉空格和多余的引号。我想我可以从这里完成,但我想知道是否有人有更优雅(或更适合)的方法。任何意见,将不胜感激。
【问题讨论】: