Shell script - to see if any change from last csv

hi all,

i attach a csv file of what im trying to explain

basically i get iMacro (like an excel macro that you can record and play back recordings but its for web browsers) to download csv reports of the printer(s)

when you open the csv report it contains certain cells -

D7 - black level 1 - 44
E7 - colour level 2 - 41
F7 - colour level 3 - 58

i have bat file to run the iMacros every day to monitor how much clients/customers are printing so this figure will go up or stay the same

i want to know if it can be possible to create a shell script to work out from the 2 reports the differences?

many thanks,

rob

There's only one report in that file. You mean: compare cells D7, E7, and F7 in today's report with the same cells in yesterday's?
You mention a .bat file which is a M$ windows batch script? Do you want the new script to run in a wndows environment, or on a veritable *nix host?

yes the batch script i have made runs on windows (same machine i run the iMacros program on)

it would be nice to run it on the same machine ie windows but im more familiar with shell scripting now so would prefer linux

i have made a batch script that runs iMacros every night and produces a new csv report so i just want to cross reference todays one with yesterdays one or todays one with 7 days ago

the rows are always different ie the rows are the room names ie that file i gave you said "carnaby 3" or "bookings" but what stays the same is the colums

Not clear. Please rephrase the entire specification giving the exact logics to apply, the OS to run it under, and the preferred tools to deploy.

i will give you the code to the Imacros -

VERSION BUILD=10.3.27.5830
TAB T=1
URL GOTO=http://172.17.4.52/
FRAME NAME=theHeader
TAG POS=1 TYPE=A ATTR=TXT:Properties
FRAME NAME=theBottom
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/userpost/xerox.set ATTR=NAME:webUsername CONTENT=admin
SET !ENCRYPTION NO
TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:/userpost/xerox.set ATTR=NAME:webPassword CONTENT=password
TAG POS=1 TYPE=BUTTON:SUBMIT FORM=ACTION:/userpost/xerox.set ATTR=TXT:Login
FRAME NAME=theTree
TAG POS=1 TYPE=A ATTR=TXT:Login/<SP>Permissions/<SP>Accounting
TAG POS=1 TYPE=A ATTR=TXT:Accounting<SP>Methods
FRAME NAME=theContent
TAG POS=1 TYPE=BUTTON ATTR=TXT:Report<SP>and<SP>Reset
TAG POS=2 TYPE=INPUT:RADIO FORM=ACTION:# ATTR=NAME:frmusageReportList CONTENT=YES
ONDOWNLOAD FOLDER=Z:\printers\accounts\ FILE={{!NOW:dd-mm-yyyy}}_XSAreport.csv WAIT=YES
TAG POS=1 TYPE=BUTTON FORM=ACTION:# ATTR=TXT:Download<SP>Report<SP>(.csv)
WAIT SECONDS=10

and i run this batch script everynight using task scheduler -

"C:\Program Files\Ipswitch\iMacros\iMacros.Sidebar.exe" -macro "C:\ie_imacro\iMacros\Macros\accounts.iim"

so what the batch file does is that it runs the imacro program for the accounts printer

it saves the file in the location "Z:\printers\accounts\ FILE={{!NOW:dd-mm-yyyy}}_XSAreport.csv"

it runs 24/7 and produces csv reports for all the days (the attachment i showed you)

all this runs on a windows 7 machine

now i want to extract the csv data in specific columns D, E, F and the whole of column A as column A is showing the clients/customers names

am i making any sense?

sorry if im not

---------- Post updated at 11:20 AM ---------- Previous update was at 10:42 AM ----------

im getting somewhere -

awk -F"," '{print $1,$4,$5,$6}' 16-02-2017_XSAreport.csv

---------- Post updated 02-17-17 at 04:20 AM ---------- Previous update was 02-16-17 at 11:20 AM ----------

awk -F',' 'NR>3 {print $1,$4,$5,$6}' 16-02-2017_XSAreport.csv

Try something like:

awk '
  {
    s=$1
    for(i=4; i<=6; i++) {
      if (FNR==NR) 
        A[NR,i]=$i
      else
        s=s OFS A[FNR,i]-$i
    }
  }
  NR>FNR && FNR>1 {
    print s
  }
' FS=, OFS=, 15-02-2017_XSAreport.csv 16-02-2017_XSAreport.csv 
1 Like