- 论坛徽章:
- 145
|
回复 1# 251744647
>> ...关键就是双引号和[]之间的空格不要转换...
$ awk -f csv.awk a.log
1.11.1.1,-,-,[28/Jul/2016:03:00:23 +0000],"GET / HTTP/1.1",304,0,"-","Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"
$ cat csv.awk
BEGIN{
OFS = ","
t = split("[]\"\"",a,"");
for(n=1;n<t;n+=2){
sn[a[n]]=a[n+1]
re = re a[n]
}
}
function tocsv(){
c = 0
for (n = 1; n <= NF; n++) {
if(q != ""){
if($n~"["sn[q]"]$"){
q = ""
}
$c = $c FS $n
continue
}
if(match($n,"^(["re"])",a)){
q = a[1]
$(++c) = $n
if($n ~"["sn[q]"]$"){
q = "";
}
continue
}
$(++c) = $n
}
NF = c
}
{
tocsv();
print
}
|
|