log.txt格式:
;Index,Level,StripSize,SizeinMB,Status,Bootable,Array,Name
0,0,32kB,8192,"Normal","Yes",0,"FFS"
1,0,128kB,19046,"Normall","No",0,"Dev_Cache"
2,0,64kB,305244,"Normalll","Yes",1,"0W24SWKT"或其他格式:
;Index,Level,StripSize,SizeinMB,Status,Bootable,Array,Name
0,0,32kB,8192,"Normal","Yes",0,"FFS"
1,0,128kB,19046,"Available","No",0,"Dev_Cache"
2,0,64kB,305244,"Normal","Yes",1,"0W24SWKT"下面是我的步骤:
iffs.sed
/Bootable/{
n;
s/^.*[0-9],\"([a-zA-Z]+)\",.*$/set abc=\1/p;
}
1. sed -nrf iffs.sed log.txt
result: set abc=Normal
2. sed "2d" log.txt |sed -nrf iffs.sed
result: set abc=Normal or Available
3. sed "2,3d" log.txt |sed -nrf iffs.sed
result: set abc=Normal你能帮我用简单的方法吗?windows操作系统和winpe 3.0环境。我想得到这样的结果:“set abc2= Normal;set abc3=Normal or Available;set abc4=Normal”
发布于 2012-03-07 11:36:42
在Python中:
for line in open('log.txt'):
print 'abc=' + line.split(',')[4]发布于 2012-03-07 12:50:24
[ghoti@pc ~/tmp]$ cat data
;Index,Level,StripSize,SizeinMB,Status,Bootable,Array,Name
0,0,32kB,8192,"Normal","Yes",0,"FFS"
1,0,128kB,19046,"Available","No",0,"Dev_Cache"
2,0,64kB,305244,"Normal","Yes",1,"0W24SWKT"
[ghoti@pc ~/tmp]$ cat doit.awk
#!/usr/bin/awk -f
BEGIN {
FS=",";
ind=ARGV[1];
ARGV[1]="";
}
$1 == ind {
gsub(/"/, "", $5);
print $5;
}
[ghoti@pc ~/tmp]$ ./doit.awk 2 data
Normal
[ghoti@pc ~/tmp]$ ./doit.awk 1 data
Available
[ghoti@pc ~/tmp]$ 如果你的索引在文件中不会重复,你可以在print $5后面加上一个nextfile来加快速度。
发布于 2012-03-08 00:39:13
这可能对你有用:
sed '1d;=;s/[^"]*"\([^"]*\).*/\1/' log.txt | sed 'N;s/\n/=/;s/^/set abc/'
set abc2=Normal
set abc3=Available
set abc4=Normalhttps://stackoverflow.com/questions/9595336
复制相似问题