awk easy question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk easy question
# 8  
Old 06-19-2013
I changed it, but still getting the same results. It seems to be the inside loop that is not running again. Probably something I don't understand about the way the while loop is functioning... that's what I get for trying to use Yoda's code without fully comprehending!

I see what you're saying with your edit. I will try to pare it down to one loop and see if that works. I was just unsure how to differentiate between newlines, but since each line will have a static number of fields, that probably shouldn't be a problem anyway.

---------- Post updated at 02:44 PM ---------- Previous update was at 01:34 PM ----------

I dropped it to only one loop, removing the outer while loop, and it still seems to only read one line. BTW, if I'm supposed to start a new topic for this, sorry.

Code:
#!/bin/ksh
i=1
while IFS="," read DOC VOUCHER PO PROJECT ORG CONTRACT CUSTOMERIN CUSTOMERID PROPOSAL OWNING EMPLOYEE VENDOR DATE PRMAN PR SUBJECT RQID COST CO RQ
do
		echo "<section name=\"Query$i\">"
		echo "$DOC"
		echo "$VOUCHER"
        echo "$PO"
        echo "$PROJECT"
        echo "$ORG"
        echo "$CONTRACT"
        echo "$CUSTOMERIN"
        echo "$CUSTOMERID"
        echo "$PROPOSAL"
        echo "$OWNING"
        echo "$EMPLOYEE"
        echo "$VENDOR"
        echo "$DATE"
        echo "$PRMAN"
        echo "$PR"
        echo "$SUBJECT"
		echo "$RQID"
		echo "$COST"
		echo "$CO"
		echo "$RQ"
		i=`expr $i + 1`
		echo "</section>"
done < test2.csv

Shouldn't it go back and keep going until there's nothing left? Or do I have to specifically tell it to go to the next line somehow?

Last edited by Parrakarry; 06-19-2013 at 04:17 PM..
# 9  
Old 06-19-2013
Can you post few lines from your input file: test2.csv in code tags
# 10  
Old 06-19-2013
Code:
IA Supporting Docs,Voucher Number,Invoice Number,PO Number,Project Number,ORG ID,,,,,,,,,,,,,,,,
Invoice,Voucher Number,Invoice Number,PO Number,Project Number,ORG ID,,,,,,,,,,,,,,,,

I don't have FTP access to the server yet, so I just took the first two lines from what I'm working on and copy/pasted, creating test2.csv.

This is the output I'm getting, which I just noticed is giving me Query2 as the section name... interesting.
Code:
<section name="Query2">
IA Supporting Docs
Voucher Number
Invoice Number
PO Number
Project Number
ORG ID














</section>

# 11  
Old 06-19-2013
I would suggest using awk because it will work for any number of fields in your input file:
Code:
awk -F, '
        {
                print "<section name=\"Query" NR "\">"
                for ( i = 1; i <= NF; i++ )
                {
                        if ( $i )
                                print $i
                }
                print "</section>"
        }
' test2.csv

This User Gave Thanks to Yoda For This Post:
# 12  
Old 06-19-2013
Since it prints so many lines, how can you tell anything's being skipped? Many would scroll right off the screen.
# 13  
Old 06-19-2013
Yoda, that is a beautiful piece of code compared to mine, wow. Plus, I actually understand it! Thank you so much.

And Corona, not sure I understand the question? I could see the "blank" lines matched up with the number of empty cells in spreadsheet/empty fields in CSV file.

I should be able to work from that and get everything I need... hopefully. Thanks again, you can bet I'll be back.
# 14  
Old 06-19-2013
Quote:
Originally Posted by Parrakarry
And Corona, not sure I understand the question?
You are printing many lines, and not redirecting to a file. If you are printing more lines than your terminal has lines, the remainder will vanish off the top.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk Help: quick and easy question may be: How to use &&

Hi Guru's. I am trying to use to check if $5 is greater than 80 & if not 100, then to print $0 : awk '{ if ($5>80) && if ($5 != 100) print $0} But getting error: >bdf1|sed 's/%//g'|awk '{ if ($5>80) && if ($5 != 100) print $0}' syntax error The source line is 1. The error... (6 Replies)
Discussion started by: rveri
6 Replies

2. UNIX for Dummies Questions & Answers

fun and easy awk question

I have a file called mytitles.txt containing a list of book titles I have a second file called abfile.txt containing a list of book titles (in the 3rd field) and it has author info and copyright year info as well.. I want to search mytitles.txt for a match in the 3rd field of abfiles.txt, and... (2 Replies)
Discussion started by: glev2005
2 Replies

3. UNIX for Dummies Questions & Answers

easy question

Hi everybody: Could anybody tell me if I have several files which each one it has this pattern name: name1.dat name2.dat name3.dat name4.dat name10.dat name11.dat name30.dat If I would like create one like: name_total.dat If I do: paste name*.dat > name_total.dat (15 Replies)
Discussion started by: tonet
15 Replies

4. Shell Programming and Scripting

Hopefully an Easy Question

I have a file name in this format ABC_WIRE_TRANS_YYYYMMDD_00.DAT I need to cut out the _00 out of the file name everytime. It could be _00, _01,_02, etc .... How do I cut it out to look as follows? ABC_WIRE_TRANS_YYYYMMDD.DAT (6 Replies)
Discussion started by: lesstjm
6 Replies

5. Shell Programming and Scripting

Easy AWK question

Ive got some output in a file that looks exactly like this: 1 ----------- 1542 1 record(s) selected. How do I just extract that 1542 and drop it into another file or (preferrably) a variable (using a ksh script) (9 Replies)
Discussion started by: rdudejr
9 Replies

6. UNIX for Dummies Questions & Answers

Easy question about awk gsub

How does one escape the left bracket in awk? For example: | awk 'gsub (" I'm sure it's pretty simple, I'm just a noob. (1 Reply)
Discussion started by: TheCrunge
1 Replies

7. Shell Programming and Scripting

A easy question.

this is the simple question, please help me! the question is: how to send exactly 50 ICMP Echo request packets with 500 bytes of payload to 202.139.129.221? I tried to use ping -F 500 202.139.129.221, but it didn't work. Thanks! (6 Replies)
Discussion started by: kikikaka
6 Replies

8. UNIX for Dummies Questions & Answers

Another easy question

Hello Again, Ok guys. Thanks again for your help last time but I am in need of your experience again. I wrote this script: #!/bin/sh # List either files or directories in individual accounts # using 1, 2 or 3 with invalid case $1 in echo select 1 to see the FILES in your... (3 Replies)
Discussion started by: catbad
3 Replies

9. UNIX for Dummies Questions & Answers

easy question

I know the Sun Solaries versions are ( 2.3 , 2.4 , 2.5 ... 7 , 8 ) . But some times I see sun os v5.x what does it mean ?? also what is the last new machine for sun and what are its details specifications . Thanks (3 Replies)
Discussion started by: tamemi
3 Replies

10. UNIX for Dummies Questions & Answers

Easy question

Hi, Simple question. How do I convert a unix text file to a dos text file? Thanks Helen (4 Replies)
Discussion started by: Bab00shka
4 Replies
Login or Register to Ask a Question