Awk cheatsheet: Difference between revisions
From Lolly's Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 11: | Line 11: | ||
} | } | ||
return dec; | return dec; | ||
} | |||
</source> | |||
===Sort words inside braces (gawk)=== | |||
Written for beautifying lines like | |||
<source lang=mysql> | |||
GRANT SELECT (account_id, user, enable_imap, fk_domain_id, enable_virusscan, max_msg_size, from_authuser_only, id, time_start, changed_by, enable_spamblocker, onhold, time_end, archive, mailbox_quota) ON `mail_db`.`mail_account` TO 'user'@'172.16.16.16' | |||
</source> | |||
<source lang=awk> | |||
function inner_brace_sort (rest) { | |||
sorted=""; | |||
while( match(rest,/\([^\)]+/) ) { | |||
sorted=sprintf("%s%s", sorted, substr(rest, 1, RSTART)); | |||
inner=substr(rest, RSTART+1, RLENGTH-1); | |||
split(inner, inner_a, /,[ ]*/); | |||
asort(inner_a); | |||
inner_l=length(inner_a); | |||
for(i=1; i<=inner_l; i++) { | |||
sorted=sprintf("%s%s", sorted, inner_a[i]); | |||
if(i<inner_l) sorted=sorted""sprintf(", "); | |||
} | |||
sorted=sprintf("%s)", sorted); | |||
rest=substr(rest,RSTART+RLENGTH+1,length(rest)); | |||
} | |||
return sorted""rest; | |||
} | } | ||
</source> | </source> |
Revision as of 09:20, 20 October 2016
Functions
Binary to decimal
function b2d(bin){
len=length(bin);
for(i=1;i<=len;i++){
dec+=substr(bin,i,1)*2^(len-i);
}
return dec;
}
Sort words inside braces (gawk)
Written for beautifying lines like
GRANT SELECT (account_id, user, enable_imap, fk_domain_id, enable_virusscan, max_msg_size, from_authuser_only, id, time_start, changed_by, enable_spamblocker, onhold, time_end, archive, mailbox_quota) ON `mail_db`.`mail_account` TO 'user'@'172.16.16.16'
function inner_brace_sort (rest) {
sorted="";
while( match(rest,/\([^\)]+/) ) {
sorted=sprintf("%s%s", sorted, substr(rest, 1, RSTART));
inner=substr(rest, RSTART+1, RLENGTH-1);
split(inner, inner_a, /,[ ]*/);
asort(inner_a);
inner_l=length(inner_a);
for(i=1; i<=inner_l; i++) {
sorted=sprintf("%s%s", sorted, inner_a[i]);
if(i<inner_l) sorted=sorted""sprintf(", ");
}
sorted=sprintf("%s)", sorted);
rest=substr(rest,RSTART+RLENGTH+1,length(rest));
}
return sorted""rest;
}