rockaka
可能是个很简单的问题
awk读取文件,分别输出到不用的文件,
shell文件ss
for file in 2008*
do
awk -f c std file
done
awk文件c
BEGIN {FS="([ |//t])" ;print FILENAME}
NR==FNR {a[$5]=$4}
NR>FNR {if(a[$2]!="") print a[$2],$2,$4,$5>"yes";}
NR>FNR {if(a[$2]=="") print $2,$4,$5>"not";}
现在需要希望输出的文件是yes+文件名和not+文件名。请问在awk文件中要怎样改???
ly5066113
awk 'NR==FNR{a[$5]=$4}NR>FNR{if($2 in a) print a[$2],$2,$4,$5 > "yes"FILENAME;else print $2,$4,$5 > "not"FILENAME}' std 2008*
cjaizss
[code]
BEGIN {FS="([ |//t])" ;print FILENAME}
NR==FNR {a[$5]=$4}
NR>FNR {if(a[$2]!="") print a[$2],$2,$4,$5>"yes"FILENAME;}
NR>FNR {if(a[$2]=="") print $2,$4,$5>"not"FILENAME;}
[/code]
rockaka
BEGIN {FS="([ |//t])" ;print FILENAME}
NR==FNR {a[$5]=$4}
NR>FNR {if(a[$2]!="") print a[$2],$2,$4,$5>"yes"FILENAME;}
NR>FNR {if(a[$2]=="") print $2,$4,$5>"no"FILENAME;}
我就是这样写的,错误信息如下
awk: Syntax error
at line 3 of file c
context is
NR>FNR {if(a[$2]!="") print >>> a[$2],$2,$4,$5>"yes"FILENAME <<< ;}
awk: illegal statement
at line 3 of file c
ruifox
注意:NR==FNR 时,FILENAME=std
NR>FNR时,FILENAME=file
如果要用第一个文件名,写法如下:
BEGIN {FS="([ |//t])" ;print FILENAME;yfile="yes"FILENAME;nfile="no"FILENAME;}
NR==FNR {a[$2]=$1;}
NR>FNR {
if(a[$2]!="") print a[$2],$1>yfile
else print $2,$1>nfile
}
如果要用第二个文件名,写法如下:
BEGIN {FS="([ |//t])" ;print FILENAME;}
NR==FNR {a[$2]=$1;}
NR>FNR {yfile="yes"FILENAME;nfile="no"FILENAME;
if(a[$2]!="") print a[$2],$1>yfile
else print $2,$1>nfile
}
~