csci4061/p1-code/standardize
Michael Zhang 041f660ccd
f
2018-01-29 17:28:37 -06:00

57 lines
1 KiB
Awk
Executable file

#!/usr/bin/gawk -f
# Standardize the output of running commando.
#
# Convert #PIDs in commando output to %1, %2, etc so that output can
# be relied upon in testing.
#
# Eliminate @!!! messagse which may occur at unexpected times
BEGIN{
curpid = 0
alerts = ""
}
# Substitute PIDs for %%%%%1 and such
{
while(match($0,/#[0-9]+/)!=0){
p=substr($0,RSTART,RLENGTH)
if(!(p in PIDS)){
num = sprintf("%%%d",curpid) # get the width of the replacement to match
for(i=length(num); i<RLENGTH; i++){
num = num " " # pad with spaces
}
PIDS_PAD[p] = num
PIDS[p] = "%" curpid
curpid++;
}
# print "--------"
# print $0
# print "'" substr($0,RSTART+RLENGTH,1) "'"
# print "--------"
if(substr($0,RSTART+RLENGTH,1)==" "){
gsub(p,PIDS_PAD[p]);
}
else{
gsub(p,PIDS[p]);
}
}
}
# Capture alerts for later
/@!!!/{
alerts = alerts $0 "\n"
next
}
# Print all other lines
{
print
}
END{
print "ALERTS:"
printf("%s",alerts)
}