![]() |
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| UNIX for Advanced & Expert Users Expert-to-Expert. Learn advanced UNIX, UNIX commands, Linux, Operating Systems, System Administration, Programming, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| health checks | mahlathini | UNIX for Dummies Questions & Answers | 1 | 06-23-2008 04:00 AM |
| Need to apply Checks SSh/SCP | niceboykunal123 | Shell Programming and Scripting | 0 | 04-16-2008 01:41 AM |
| perform some checks on file using perl | zedex | Shell Programming and Scripting | 0 | 02-22-2008 03:01 PM |
| how to make case insensitive checks???? | hitmansilentass | Shell Programming and Scripting | 5 | 04-30-2007 02:23 PM |
| Security checks needed and at what frequency | Far | UNIX for Dummies Questions & Answers | 1 | 02-09-2005 10:31 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Doing Checks on a file
I have a process that I am trying to provide a solution for and have hit a brick wall and would like some pointers in the right direction.
Basically on a daily basis a report is automatically generated in a CSV format (FIRST.CSV) which includes codes and amounts in the following format: A016ZZ ,, 1400.43 A011ZZ ,, 15000.98 B014ZZ ,, -450.83 B027ZZ ,, 86.90 ..... The amounts can be negative or positive. The codes on the other hand always have to begin with A or B and have to always end with ZZ. Anyway after this file has been scrutinised it usually needs some amendments, however to amend the file a second CSV file (SECOND.CSV) file is created manually in the same format as above. That is codes and the corresponding values. These 2 files then need to be merged which is fine, but before it can be merged the second file (SECOND.CSV) needs to have some checks run on to ensure each code begins with an A or B followed by three numrical figures followed by the 'ZZ'post fix. Could anyone assist as to how this check can be done. I have got as far as this: if [ `cat ${SECOND.CSV} | egrep -v '^L|^M' | wc -l` -gt 0 ] then print "code other than A or B present." exit 1 fi |
|
||||
|
Haven't tested it but I think it should be as easy as
Code:
if grep -qE '^[AB][0-9][0-9][0-9]' ${SECOND.CSV}; then
# do something
fi
For such trivial expression we don't need to fire the extended regex engine. Btw, a variable name containing a dot isn't good naming I would say. |
|
||||
|
OK the above works a treat thanks. This leads me to mu next and final issue but will need to explain a little first.
Once the first file (FIRST.CSV) has been generated with codes and ammount column adjustments have to be made to certain accounts. This is done my the use of the second file (SECOND.CSV). If the codes in the first file and second file agree then the amount in the second file is added/substracted to the first file. If the code in the second file does not agree to any code in the first file then the code and amount are appended to bottom: e.g FIRST.CSV A001ZZ ,, 400 A002ZZ ,, 300 SECOND.CSV A001ZZ ,, -200 A002ZZ ,, 100 A003ZZ ,, 10 THIRD.CSV A001ZZ ,, 200 A002ZZ ,, 400 A003ZZ ,, 10 The above isd done by using the code: join -t, -a1 -a2 ${SECOND.CSV} ${FIRST.CSV} > ${THIRD.CSV} nawk -F, '{ printf $1",," "%011.2f\n",$3+$5 }' ${THIRD.CSV} > ${FINAL.CSV} The problem with the above is that if for example A001ZZ needs two adjustmentss at the same time meaning the SECOND.CSV file will look like: SECOND.CSV A001ZZ ,, -200 A001ZZ ,, 300 A002ZZ ,, 100 A003ZZ ,, 10 my code will only pick up the first instance of A001ZZ and adjust as required and the second occurence of A001ZZ will then be treated as a new code and be appended to the bottom of FINAL.CSV. Could anyone please assist as to how I can resolve this issue? |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|