I see several things that are likely to fail, but I don't understand what you're trying to do so I don't know how to fix them. Here are a few things for you to consider:
Shell variables are not expanded inside single quoted strings.
Inside awk programs, awk variables don't need a $ unless you are trying to get data from the field in the current input line specified by the value that variable expands to.
Anytime you have an expression starting with variable != value || variable != another_value, the evaluation of that expression is TRUE. Adding more || expression sequences to that expression will never change its value to FALSE.
If an input line that you are processing with awk or grep is longer than LINE_MAX bytes, the results are undefined. You can get the value of LINE_MAX for your system by running the command: getconf LINE_MAX. If colpos != 228070 means that your input lines are 228,070 bytes or more in length, you will not be able to use awk or grep to process those files on some systems.
Thanks for looking into my requirement let me summerize what i am trying achieve.
i have source data in Germany_Source_1.txt, Germany_Source_2.txt ...nth.txt files which contains business keys.
Obligor_ID is business key. using given 18 Obligor_ID i am dividing Germay_Source files for Greece and Germany when Given Obligor_ID not found in each row then i need that row/line as Greece_Source_1.txt .*_2.txt....*_nth.txt file found Obligor_ID information i am keeping Greece_Source_1 ...*_2.txt....*_nth.txt.
Note: Obligor_ID column position is not a fixed position on every file
i would like to achieve based on source file i have to check Obligor_ID coulm position on the column then i have to write out put to another file whenever list of 19 Obligors not found on the row/line.
Source Data sample
I have corrected command_construction variable properly, now my script is working fine. but i am still looking for better solution on below part of script to maintain it easily.
Can you please suggest with good solution in below part of script how maintain it easy.
Moderator's Comments:
Please use CODE tags for sample input and output as well as for code segments.
Last edited by Corona688; 09-08-2016 at 12:24 PM..
Reason: Replaced private data with gibberish
I am still waiting for other work around.
Please suggesst me
I have been trying off an on to figure out how your code works and have been unable to do so. I assume that this is the contents of $config_file_path/crt_extracts_branch_gswid_cntl:
So after running the commands in your script: FILENAME is an array containing crt_extracts_branch_gsw_cntl and Grermany_Source_1.txt through Grermany_Source_6.txt, COLPOS is an array containing nothing, and CTLCOLPOS is an array containing the string data. Moving on from there nothing makes any sense to me. It would seem that you would be better off running awk once to extract the three fields you want and read the output in a while loop instead of creating three arrays to be processed later.
I'm sorry, but if I can't understand how this code is working, I don't know how to make it work faster.
Obviously you could get rid of the three calls to cat and the three calls to grep in the above pipelines and just use:
for various values of arrayname and n to speed up the code above, and you could change:
to the simpler and faster:
but these things are only done once; so they won't have a big effect on the speed of the inner loop.
So, since your code is working for you as is, I don't think I can help much.
You have lots of command substitutions that could be replaced by simple (and faster) parameter expansions. You have a command construction segment and an eval that seem like they could be replaced with a simple command invocation. But I hesitate to make any suggestions here because I can't figure out what is going on with the data you've shown us.
We might have a better chance of understanding what you were doing if you would show us the actual contents of the files named in your script and label those files with their names (as used in your script). AND, please use CODE tags for you sample input files so we can see what is actually in the files versus what may just be descriptive text before or after the contents of those files.
Thanks Don, i will take your inputs for faster and simple scripts going forward.
Please find here my actual code.
Please find control files data.
Please provide your suggestion on above code
especially here i am looking for a refine my script and simple use of
file
Hi Gurus,
I have requirement need to sum the value, the logic is if the value is negative then time -1, I tried below two ways. one is failed, another one doesn't work.
awk -F"," '{if($8< 0 $8*-1 else $8) sum+=$8}{print sum, $8} END{printf("%.2f\n",sum)}'
awk -F","... (4 Replies)
Can anyone please assist me?
Please find the attached input and output file for ur reference.
a)Incase if i get negative value (ex:-000100) in the 11th column then i have to convert the value to 0000000(7 zeros-length is 7) and then
print the entire record.
b)Incase if there is no... (2 Replies)
Hi, i need help on replacing negative values in a column with 0. any quick fix on this? thanks much. for instance,
input:
1
2.3
-0.4
-25
12
13
45
-12
desired output
1
2.3
0
0
12
13
45 (4 Replies)
Ok, so i monitor disk space on remote machines using snmp. Works great for me. But whenever a particular partition happens to have Terabytes of data, snmp starts reporting negative values.
Can someone please tell me how to get around this problem?
The AllocationUnit is 512 bytes. Weird... (0 Replies)
Hi all,
I have a file that looks like shown below. I want to find places where the value in column 2 change from negative to positive and vice versa and return the value on column 1 at that point. I wonder if this is possible in shell script or awk .. please help!
Here is the original data
... (6 Replies)
Hello,
I have a list like this :
1
2
-4
0
-3
-7
5
6 etc.
Is there a way to remove all the positive values and print only the negative values, without using grep, sed or awk?
Thanks,
Prasanna (4 Replies)
hi i am using printf in a script and it is not printing negative values..i have to use printf to get rid of the newline..here is my code:
fin=`echo $a - $b | bc`
printf "${fin}," >> test
these statements are in a loop. here is what i get when i try to subtract 4 from 8:
./scr1: line... (2 Replies)
Hi Gurus,
In my file I have an amount field from position 74 to 87, which contains values starting with '+' as well as '-'. I want to add all positive values in a varible called "CREDIT" and all negative values in a variable "DEBIT". I know, we can use grep to identify values with positive and... (4 Replies)