当前位置: 技术问答>linux和unix
高手请指教,急!分不够再加。谢谢!
来源: 互联网 发布时间:2015-01-16
本文导语: 我有一个文本文件/usr/oap/reports/disp1(不停更新),里边的内容如下: 1040200394 DPLI|DPHC|DPMB|DPVALOT| 1|1|92|85|3|0| 1|2|2|2|0|0| 2|1|40|30|7|0| 2|2|2|1|1|0| 我现在要想取出第三行“1|1|92|85|3|0|”中92、85、3三个不停变化的值,并保存...
我有一个文本文件/usr/oap/reports/disp1(不停更新),里边的内容如下:
1040200394
DPLI|DPHC|DPMB|DPVALOT|
1|1|92|85|3|0|
1|2|2|2|0|0|
2|1|40|30|7|0|
2|2|2|1|1|0|
我现在要想取出第三行“1|1|92|85|3|0|”中92、85、3三个不停变化的值,并保存到该路径下的一个文件data里,格式如下:
[data]
DPLI=92
DPHC=85
DPMB=3
请高手贴出代码。
谢谢。(1|1|92|85|3|0|是不停变化的,一分中变化一次,格式不变,以“|”分割).
另外,我要定期执行这个脚本(一分钟一次)怎么实现?
1040200394
DPLI|DPHC|DPMB|DPVALOT|
1|1|92|85|3|0|
1|2|2|2|0|0|
2|1|40|30|7|0|
2|2|2|1|1|0|
我现在要想取出第三行“1|1|92|85|3|0|”中92、85、3三个不停变化的值,并保存到该路径下的一个文件data里,格式如下:
[data]
DPLI=92
DPHC=85
DPMB=3
请高手贴出代码。
谢谢。(1|1|92|85|3|0|是不停变化的,一分中变化一次,格式不变,以“|”分割).
另外,我要定期执行这个脚本(一分钟一次)怎么实现?
|
我上面的shell程序有错,在linux调试上调试后通过为:
while
true
do
cat /usr/oap/reports/disp1|
(read line1;
read line2;
read line3;
echo $line3|sed 's/|/ /g'|
while
read v1 v2 v3 v4 v5 other
do
echo '[data]'>>data;
echo "DPLI=${v3}">>data;
echo "DPHC=${v4}">>data;
echo "DPMB=${v5}">>data;
done
)
sleep 60
done
能够全部保存每次的结果。当然用awk是更简单的,只是更难理解。
while
true
do
cat /usr/oap/reports/disp1|
(read line1;
read line2;
read line3;
echo $line3|sed 's/|/ /g'|
while
read v1 v2 v3 v4 v5 other
do
echo '[data]'>>data;
echo "DPLI=${v3}">>data;
echo "DPHC=${v4}">>data;
echo "DPMB=${v5}">>data;
done
)
sleep 60
done
能够全部保存每次的结果。当然用awk是更简单的,只是更难理解。
|
#include
#include
void getdata(char *buf,int *a,int *b,int *c) {
char tmp[1024];
char *tok;
sprintf(tmp,"%s",buf);
tok=strtok(tmp,"|");
tok=strtok(NULL,"|");
tok=strtok(NULL,"|");
*a=atoi(tok);
tok=strtok(NULL,"|");
*b=atoi(tok);
tok=strtok(NULL,"|");
*c=atoi(tok);
}
main () {
FILE *fp;
char buf[1024];
int i,first,second,third;
while (1) {
fp=fopen("/usr/oap/reports/displ","r");
for (i=0;i
#include
void getdata(char *buf,int *a,int *b,int *c) {
char tmp[1024];
char *tok;
sprintf(tmp,"%s",buf);
tok=strtok(tmp,"|");
tok=strtok(NULL,"|");
tok=strtok(NULL,"|");
*a=atoi(tok);
tok=strtok(NULL,"|");
*b=atoi(tok);
tok=strtok(NULL,"|");
*c=atoi(tok);
}
main () {
FILE *fp;
char buf[1024];
int i,first,second,third;
while (1) {
fp=fopen("/usr/oap/reports/displ","r");
for (i=0;i