Help with Creating file based on conditions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with Creating file based on conditions
# 8  
Old 02-12-2015
Quote:
Originally Posted by RudiC
Why don't you just source the file?
Code:
. /tmp/propertyfile.txt

will assign the four variables.

---------- Post updated at 22:31 ---------- Previous update was at 22:29 ----------

... and remove the DOS <CR> line terminators upfront!
Ok ! I need output mentioned in the attachment(ouputfile.txt). Can you help!
# 9  
Old 02-12-2015
After having removed ALL the <CR>s from both files, this seemed to work:
Code:
. /tmp/propertyfile.txt
while read KW
        do eval echo "$KW${TMINRECORD:0:1}{${TMINRECORD:1}..${TMAXRECORD:1}} $KW${KMINRECORD:0:1}{${KMINRECORD:1}..${KMAXRECORD:1}}"
        done < /tmp/File1.txt | tr ' ' '\n'
00123T10
00123T11
00123T12
00123T13
etc...

This User Gave Thanks to RudiC For This Post:
# 10  
Old 02-12-2015
Can u please explain the code. I'm getting bad substitution error. i think eval command is not working.
# 11  
Old 02-12-2015
I failed to mention that this needs a recent shell capable of brace expansion. A recent bash can do it out of the box, ksh needs the -B option set (afaik).
# 12  
Old 02-12-2015
bash-4 will even retain the 00..04 (bash-3 will reduce to 0..4).
The following lets printf fold to lines:
Code:
#!/bin/bash
. propertyfile.txt
while read KW
do
  eval printf '%s\\n' $KW${TMINRECORD:0:1}{${TMINRECORD:1}..${TMAXRECORD:1}} $KW${KMINRECORD:0:1}{${KMINRECORD:1}..${KMAXRECORD:1}}
done < File1.txt

But still the eval is the evil.
# 13  
Old 02-12-2015
I'm using KSH. I tried the above code and its not working. Any other solution?
# 14  
Old 02-12-2015
ksh93 does it like bash-3. You seem to have the older ksh88.
Here is a solution with awk:
Code:
awk -F"=" '
NR==FNR {s[nn++]=$2; next}
{
  for (n=0; n<nn; n+=2) {
    letter=substr(s[n],1,1)
    startd=substr(s[n],2); endd=substr(s[n+1],2)
    lend=length(startd)
    for (d=startd; d<=endd; d++) printf "%s%s%0*d\n",$0,letter,lend,d
  }
}' propertyfile.txt File1.txt

On Solaris, take nawk or /usr/xpg4/bin/awk
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search and replace value based on certain conditions in a fixed width file

Hi Forum. I tried searching for a solution using the internet search but I haven't been able to find any solution for what I'm trying to accomplish. I have a fixed width column file where I need to search for any occurrences of "D0" in col pos.#1-2, 10-11, 20-21 and replaced it with "XD". ... (2 Replies)
Discussion started by: pchang
2 Replies

2. Shell Programming and Scripting

awk to update file based on 5 conditions

I am trying to use awk to update the below tab-delimited file based on 5 different rules/conditions. The final output is also tab-delimited and each line in the file will meet one of the conditions. My attemp is below as well though I am not very confident in it. Thank you :). Condition 1: The... (10 Replies)
Discussion started by: cmccabe
10 Replies

3. Shell Programming and Scripting

awk to filter file based on seperate conditions

The below awk will filter a list of 30,000 lines in the tab-delimited file. What I am having trouble with is adding a condition to SVTYPE=CNV that will only print that line if CI= must be >.05 . The other condition to add is if SVTYPE=Fusion, then in order to print that line READ_COUNT must... (3 Replies)
Discussion started by: cmccabe
3 Replies

4. Shell Programming and Scripting

Create new file with increment column based on conditions

Hello, Using bash script, i need to process the following file: 887,86,,2013-11-06,1,10030,5,2,0,200,, 887,86,,2013-11-05,1,10030,5,2,0,199,, 887,138,,2013-11-06,1,10031,6,2,0,1610612736,, 887,164,,2013-11-06,1,10000,0,2,0,36000,, and to create a new file such as the below ... (2 Replies)
Discussion started by: JonhyDeep
2 Replies

5. Shell Programming and Scripting

Split File based on different conditions

I need to split the file Conditions: Ignore any record that either starts with 1 or 9 Split the file at position 404 , if position 404 is abc or def then write all the records in a file > File 1 , the remaining records should go in to a file > File 2 Further I want to split the... (7 Replies)
Discussion started by: protech
7 Replies

6. UNIX for Dummies Questions & Answers

Shell script to extract data from csv file based on certain conditions

Hi Guys, I am new to shell script.I need your help to write a shell script. I need to write a shell script to extract data from a .csv file where columns are ',' separated. The file has 5 columns having values say column 1,column 2.....column 5 as below along with their valuesm.... (1 Reply)
Discussion started by: Vivekit82
1 Replies

7. Shell Programming and Scripting

Extract file records based on some field conditions

Hello Friends, I have a file(InputFile.csv) with the following columns(the columns are pipe-delimited): ColA|ColB|ColC|ColD|ColE|ColF Now for this file, I have to get those records which fulfil the following condition: If "ColB" is NOT NULL and "ColD" has values one of the following... (9 Replies)
Discussion started by: mehimadri
9 Replies

8. UNIX for Dummies Questions & Answers

How to get remove duplicate of a file based on many conditions

Hii Friends.. I have a huge set of data stored in a file.Which is as shown below a.dat: RAO 1869 12 19 0 0 0.00 17.9000 82.3000 10.0 0 0.00 0 3.70 0.00 0.00 0 0.00 3.70 4 NULL LEE 1870 4 11 1 0 0.00 30.0000 99.0000 0.0 0 0.00 0 0.00 0.00 0.00 0 ... (3 Replies)
Discussion started by: reva
3 Replies

9. Shell Programming and Scripting

validating a file based on conditions

i have a file in unix in which the records are like this aaa 123 233 aaa 234 222 aaa 242 222 bbb 122 111 bbb 122 123 ccc 124 222 In the output i want only the below records aaa ccc The validation logic is 1st column and 2nd column need to be considered if both columns values are... (8 Replies)
Discussion started by: trichyselva
8 Replies

10. UNIX for Dummies Questions & Answers

creating conditions for making a new line?

Basically I want to change this: a:b c:d:e f:g h:i:j k:l into a:b c d:e f:g h i:j k:l so like if there is two :'s in one line making the first into a new line. If anyone knows how to do this I would be very appreciative! (9 Replies)
Discussion started by: Audra
9 Replies
Login or Register to Ask a Question