Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/gawk -f
- function merge_line(a_line){
- line=a_line
- #print "line=" line
- split(line, fields , OFS)
- if (length(pkgfile) == 0){
- pkgfile=fields[4]
- }
- if ( length(filelist) == 0 ){
- filelist=fields[6]
- }
- if ( length(arch) == 0 ){
- if (length(fields[2]) != 0){
- arch=fields[2]
- } else {
- if ( length(pkgfile) != 0 ){
- arch=gensub(/^(.+_.+_)(.+)([.]deb)$/,"\\2","g",pkgfile)
- if ( length(arch) == 0 ){
- arch=match_arch(pkgfile)
- }
- } else if ( filelist != 0 ){
- arch=match_arch(filelist)
- }
- }
- }
- if ( length(pkg) == 0 ){
- pkg=fields[8]
- }
- if ( length(ver) == 0 ){
- ver=fields[3]
- }
- if ( length(dir_name) == 0 ){
- dir_name=fields[5]
- }
- if ( length(md5sum) == 0 ){
- md5sum=fields[7]
- }
- if ( length(pkgfile_noExt) == 0 ){
- pkgfile_noExt=fields[1]
- }
- }
- #We don't need to do the following since it is the key.
- #if ( length(pkgfile_noEx) == 0 ){
- # pkgfile_noExt=pkgfile
- # pkgfile_noExt=sub(/\.[^.]+$/, "", pkgfile_noExt)
- #}
- if ( length(pkg) == 0 ){
- pkg=pkgfile_noExt
- }
- }
- function match_arch_exact(a_field, arch){
- switch (a_field){
- case /[_\-.]i686[_\-.]/:
- a_arch="i686"; break
- case /[_\-.]i586[_\-.]/:
- a_arch="i586"; break
- case /[_\-.]i486[_\-.]/:
- a_arch="i486"; break
- case /[_\-.]i386[_\-.]/:
- a_arch="i386"; break
- case /[_\-.]x86_64[_\-.]/:
- a_arch="x86_64"; break
- case /[_\-.]amd64[_\-.]/:
- a_arch="amd64"; break
- case /[_\-.]amd64[_\-.]/:
- a_arch="amd64"; break
- case /[_\-.] armhf[_\-.]/:
- a_arch="armhf"; break
- case /[_\-.]armel[_\-.]/:
- a_arch="armel"; break
- default:
- a_arch=""; break
- }
- return a_arch
- }
- functionstripArch(a_field){
- a_arch=match_arch_exact(a_field)
- }
- function match_arch(a_field, a_arch){
- switch (a_field){
- case /[_\-.]i686[_\-.]/:
- #a_arch="i686"; break
- case /[_\-.]i586[_\-.]/:
- #a_arch="i586"; break
- case /[_\-.]i486[_\-.]/:
- #a_arch="i486"; break
- case /[_\-.]i386[_\-.]/:
- a_arch="i386"; break
- case /[_\-.]x86_64[_\-.]/:
- #a_arch="x86_64"; break
- case /[_\-.]amd64[_\-.]/:
- a_arch="amd64"; break
- case /[_\-.]amd64[_\-.]/:
- a_arch="amd64"; break
- case /[_\-.] armhf[_\-.]/:
- a_arch="armhf"; break
- case /[_\-.]armel[_\-.]/:
- a_arch="armel"; break
- default:
- a_arch=""; break
- }
- return arch
- }
- BEGIN {
- if (length(shuffle_OFS)>0){
- FS=shuffle_OFS
- } else
- {
- FS="@@@@"
- }
- if (length(shuffle_FS)>0){
- OFS=shuffle_FS
- } else {
- OFS = "|"
- }
- }
- { #f1=pkgfile_noExt |f2=arch |f3=ver |f4=pkgfile |f5=dir_name |f6=filelist |f7=md5sum |pkg
- #adb_8.1.0+r23-5_i386| |8.1.0+r23-5|adb_8.1.0+r23-5_i386.deb |packages |adb_8.1.0+r23-5_i386.files | |adb
- #adb_8.1.0+r23-5 | | | |packages|adb_8.1.0+r23-5.files |00fe8bb85ae24f00fff63bdfbd9464ea|
- #filelist "|" md5sum "|" dir_name "|" pkg "|" arch "|" ver "|" pkgfile
- #split($0, lines , FS)
- pkg=""; arch=""; ver=""; pkgfile=""; f5=dir_name=""; f6=filelist=""; md5sum=""; pkgfile_noExt=""
- if (NF==1){
- line=$i
- last_byarch[arch]=line
- split(line, fields , OFS)
- pkgfile_noExt=fields[1]
- pkgfile_noExt_noArch=stripArch(pkgfile_noExt)
- if (! $1 in last_bykey){
- last_bykey[pkgfile_noExt_noArch]=line
- } else {
- last_bykey[pkgfile_noExt_noArch]=last_bykey[pkgfile_noExt_noArch] FS line
- }
- } else if (NF>1){
- for(i=1; i<=NF; i++){
- line=$i
- merge_line($1)
- }
- }
- print pkg, arch, ver, pkgfile, dir_name, filelist, md5sum,pkgfile_noExt
- }
- #fonts-arphic-gbsn00lp_2.11-15_all||2.11-15|fonts-arphic-gbsn00lp_2.11-15_all.deb|packages|fonts-arphic-gbsn00lp_2.11-15_all.files||fonts-arphic-gbsn00lp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement