skip lines while reading a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting skip lines while reading a file
# 1  
Old 04-06-2011
skip lines while reading a file

Hi Experts,

I am tryin to read a file and while doing so i need to skip the lines which start with a hash (#) char.

I thought of using a goto command but a lot of guys on this site say its not the good way to program. Moreover I am using a ksh shell which deos not support goto command.

Below is the algo I am using; which definately doesn't work. I need a logic to substitute GOTO command. I have thought of using case logic and also functions; but they some how dont fit well with the work I am trying to do. Let me know if you need more details/info

Please advise guys.

Thanks in advance. Smilie

Code:
 
cat <file name> | while read i
do 
      if [[ <hash char enountered> ]]; then
       goto end_of_pgm
      fi
etc 
etc
etc
end_of_pgm
   echo $i
done

# 2  
Old 04-06-2011
Even though you are saying that you want to skip lines that start with "#", at the same time you say that you want to quit when you see it.

If you want to skip "#":
Code:
!/usr/bin/ksh
egrep -v '^#' inp_file |
while read mLine
do
  echo "mLine = <${mLine}>"
done

If you want to quit when "#" appears:
Code:
!/usr/bin/ksh
sed -n '/^#/q;p' inp_file |
while read mLine
do
  echo "mLine = <${mLine}>"
done

This User Gave Thanks to Shell_Life For This Post:
# 3  
Old 04-06-2011
Thanks for your reply.
Sorry if I was not clear. Its not that i want to quit i want to skip that particular line and then proceed to the next line.

Hope this clarifies.

---------- Post updated at 02:52 PM ---------- Previous update was at 02:20 PM ----------

Hi Shell Life,
I used the code snippet you provided and with a little bit of modifications i was able to use it. Thanks fo all the help.

Appreciate it.
# 4  
Old 04-06-2011
Code:
while IFS= read -r line; do
    case $i in
        \#*) continue;;
    esac
    printf '%s\n' "$i"
done

Of course, you'll need to feed the while loop with a pipe or a redirect or its inherited stdin.

Regards,
Alister

---------- Post updated at 05:32 PM ---------- Previous update was at 05:26 PM ----------

Quote:
Originally Posted by bankimmehta
I thought of using a goto command but a lot of guys on this site say its not the good way to program.
Don't blindly follow any mantras. In certain situations (complex error handling, for example), a well-utilized goto can significantly simplify code, and simpler code is easier to read, maintain, less buggy and perhaps faster.

Regards,
Alister
# 5  
Old 04-07-2011
Quote:
Originally Posted by bankimmehta
I thought of using a goto command but a lot of guys on this site say its not the good way to program
An interesting discussion with Linus Torvalds about the pros and cons of goto statements:

Linux: Using goto In Kernel Code | KernelTrap
This User Gave Thanks to Franklin52 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reading multiple lines in a file

Hello, I am new in shell scripting. I need help regarding following. I have 4 files generated by backups daily. I have stored the names of these 4 files into one file. i.e I have 4 files names as a, b, c & d and these names have been put into one file abcd.txt. Now I want to cat each file in... (7 Replies)
Discussion started by: Ali Sarwar
7 Replies

2. Shell Programming and Scripting

awk - Skip x Number of Lines in Counter

Hello, I am new to AWK and in UNIX in general. I am hoping you can help me out here. Here is my data: root@ubuntu:~# cat circuits.list WORD1 AA BB CC DD Active ISP1 ISP NAME1 XX-XXXXXX1 WORD1 AA BB CC (9 Replies)
Discussion started by: tattoostreet
9 Replies

3. Shell Programming and Scripting

Reading in two lines at once from a text file

Hello everyone, I have thought about this for quite some time and know what I want to do but am having some trouble at it. I have a text file filled with numbers like this, there are more in the file obviously. Each number is separated by a space. 1 3 2 4 5 1 -1 1 0 -1 5The idea is... (7 Replies)
Discussion started by: tastybrownies
7 Replies

4. Shell Programming and Scripting

Regarding reading lines into a new file

Hi all, I jut use a loop to read lines from the user and redirect it to a file. echo "Enter the line" while read -r LINE do echo $LINE >> FILE if ;then break fi done input app... (1 Reply)
Discussion started by: Ananthdoss
1 Replies

5. Shell Programming and Scripting

awk: skip x lines and ssh

Im trying to ssh to a remote machine to grep 'x info' *.log and Im able to get the grep output as expected but "after" the policies (1st 14 lines) - I need to skip the first 14 lines. Its SunOS. Plz help??? (7 Replies)
Discussion started by: anthonyraj75
7 Replies

6. Shell Programming and Scripting

awk - skip x lines and ssh

Im trying to ssh to a remote machine to grep 'x info' *.log and Im able to get the grep output as expected but "after" the policies (1st 14 lines) - I need to skip the first 14 lines. Its SunOS. Plz help??? (1 Reply)
Discussion started by: anthonyraj75
1 Replies

7. Shell Programming and Scripting

How to skip lines which don't begin with a number

Hi, I have a file: file.txt 1 word 2 word word word 3 word 4 word and I would like to create a set: set number = `cut -d" " -f1 ${1}` #${1} is the text file but it should only contain the lines which begin with numbers, and another set which contains the lines which begin with... (10 Replies)
Discussion started by: shira
10 Replies

8. Shell Programming and Scripting

How to skip lines in a KSH?

hi, I have a shell script that searches for a particular pattern in all the files inside a directory, and gives the count of that pattern occurences in a file. Now i should not count the pattern if it exists in side a { .... }, as shown below. { ...... ..... .... PATTERN1.......... (1 Reply)
Discussion started by: divak
1 Replies

9. UNIX for Dummies Questions & Answers

skip reading certain lines in a file

How can I exclude reading lines in a file that contains the following: filesystem:/home/pach/liv_patches 128005120 88456640 37270758 71% /home/patches That is, all lines that contain and begins with filesystem: should not be processed/read from a file (5 Replies)
Discussion started by: paulsew
5 Replies

10. UNIX for Advanced & Expert Users

Reading lines within a Unix file.

I have a file that has a list of numbers in it. Each line has a different number. I am trying to create some sort of loop within a script that will pick the numbers up on lines 1 and 2 and then put those figures into the script. It then goes through the process then loops back and reads lines 2 and... (5 Replies)
Discussion started by: mariner
5 Replies
Login or Register to Ask a Question