Read file and skip the line starting with #


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Read file and skip the line starting with #
# 1  
Old 03-29-2013
Linux Read file and skip the line starting with #

Hi all,
I'm new in unix. Need some help here.

I have a file called server.cfg which contains the servers name, if I don't want to run on that server, I'll put a "#" infront it.
and I need to retrieved them to run a script to copy file to the servers.
here is my script.
Code:
#!/usr/bin/sh
file2put=$1
if [ -f $file2copy ]
then
 echo "File found, preparing to transfer... \n"
 
  grep -v '^#' | while read line 
  do
   ssh $line < checkdirectory.sh #another script to check the existing of directory
  scp $file2put $line:~/folder_name/$file2copy
 done < server.cfg
 exit
 else
  echo "File does not exist. Exiting..."
  exit 
fi

The problem is that it won't skip the server that start with a "#". I had search the similar thread such as [how to skip the line starting with "#"] etc, and I try to use the 'grep' function but it won't solve my problem.

Fyi,
my operating system : SunSolaris

Anyone can help on this? Sorry for my poor of English.

Thanks in advanced.

Last edited by beezy; 03-29-2013 at 03:43 AM.. Reason: typo
# 2  
Old 03-29-2013
I think this will skip the servers with the # in front:
Code:
#!/usr/bin/sh
file2put=$1
if [ -f $file2copy ]; then
  echo "File found, preparing to transfer... \n"
  grep -v '^#' server.cfg > valid_servers
  while read line; do
    ssh $line < checkdirectory.sh #another script to check the existing of directory
    scp $file2put $line:~/folder_name/$file2copy
  done < valid_servers
  exit
else
  echo "File does not exist. Exiting..."
  exit 
fi

This User Gave Thanks to hanson44 For This Post:
# 3  
Old 03-29-2013
Hi hanson44,

Thanks for your reply.
It really skip the line with #..
Really thanks! :")

---------- Post updated at 03:06 PM ---------- Previous update was at 02:55 PM ----------

Hi,

After I execute, it did skip the # infront
but it run one more time after reading the last server in the file.
how can I stop it? Smilie
# 4  
Old 03-29-2013
Try simplifying some. Comment out the ssh and scp lines that do the work, and add the diagnostic echo line, to see what is going on:
Code:
#!/usr/bin/sh
file2put=$1
if [ -f $file2copy ]; then
  echo "File found, preparing to transfer... \n"
  grep -v '^#' server.cfg > valid_servers
  while read line; do
    echo line = $line
    # ssh $line < checkdirectory.sh #another script to check the existing of directory
    # scp $file2put $server:~/folder_name/$file2copy
  done < valid_servers
  exit
else
  echo "File does not exist. Exiting..."
  exit 
fi

If that does not help, put "set -x" on the second line of the script, and trace the diagnostic messages.
# 5  
Old 03-29-2013
this the output,
it just simply run one more time without bring anything from the file.
and assume the username2@hostname.com is the last line of the file.

Code:
 
file2put=mesg.txt
dirname=
+ [ -f mesg.txt ]
+ echo File found, preparing to transfer... \n
File found, preparing to transfer...
+ grep -v ^# share.cfg
+ read line
+ echo line = username1@hostname.com
line = username1@hostname.com
+ read line
+ echo line = username2@hostname.com
line = username2@hostname.com
+ read line
+ echo line =
line =
+ read line
+ exit

---------- Post updated at 03:55 PM ---------- Previous update was at 03:30 PM ----------

Hi,
problem solved.
My server.cfg end with a blank line.
that's why it copy the blank line to the valid_servers too..

I'd remove the blank line and it works now.
Thanks again Smilie

Last edited by beezy; 03-29-2013 at 04:56 AM.. Reason: typo
# 6  
Old 03-29-2013
Great. You figured it out!

The other thing needed sometimes, you probably already know, is to put "sleep 1" at key points to slow the script down if it's scrolling by too fast to keep track of what's going on.
This User Gave Thanks to hanson44 For This Post:
# 7  
Old 03-29-2013
Hi hanson44,

Thanks for the remind Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to grep a line not starting with # from a file (there are two lines starting with # and normal)?

e.g. File name: File.txt cat File.txt Result: #INBOUND_QUEUE=FAQ1 INBOUND_QUEUE=FAQ2 I want to get the value for one which is not commented out. Thanks, (3 Replies)
Discussion started by: Tanu
3 Replies

2. Shell Programming and Scripting

With script bash, read file line per line starting at the end

Hello, I'm works on Ubuntu server My goal : I would like to read file line per line, but i want to started at the end of file. Currently, I use instructions : while read line; do COMMAND done < /var/log/apache2/access.log But, the first line, i don't want this. The file is long... (5 Replies)
Discussion started by: Fuziion
5 Replies

3. Shell Programming and Scripting

How to read a file starting at certain line number?

I am new to ksh scripts. I would like to be able to read a file line by line from a certain line number. I have a specific line number saved in a variable, say $lineNumber. How can I start reading the file from the line number saved in $lineNumber? Thanks! (4 Replies)
Discussion started by: dcowboys13
4 Replies

4. Shell Programming and Scripting

How to read file line by line and compare subset of 1st line with 2nd?

Hi all, I have a log file say Test.log that gets updated continuously and it has data in pipe separated format. A sample log file would look like: <date1>|<data1>|<url1>|<result1> <date2>|<data2>|<url2>|<result2> <date3>|<data3>|<url3>|<result3> <date4>|<data4>|<url4>|<result4> What I... (3 Replies)
Discussion started by: pat_pramod
3 Replies

5. Shell Programming and Scripting

Need a program that read a file line by line and prints out lines 1, 2 & 3 after an empty line...

Hello, I need a program that read a file line by line and prints out lines 1, 2 & 3 after an empty line... An example of entries in the file would be: SRVXPAPI001 ERRO JUN24 07:28:34 1775 REASON= 0000, PROCID= #E506 #1065: TPCIPPR, INDEX= 003F ... (8 Replies)
Discussion started by: Ferocci
8 Replies

6. Shell Programming and Scripting

want to skip a line in XML file using awk

HI All, I am trying to split a xml using awk. now the issue is i want to skip three lines from the xml file. first two and last one based on pattern. plz some one help. i am new to awk and struggling :wall: <?xml version="1.0"?> <notification> ..... ..... ..... ..... ........ (24 Replies)
Discussion started by: ganesan kulasek
24 Replies

7. UNIX for Dummies Questions & Answers

skip first line when doing a read of csv file

Folks, how do i skip the first line in a csv, while doing the read of a csv file in to a variable line by line. eg : do echo $line done < $rpt where rpt is path to csv file The initial 1st line is a garbage that i want to avoid, and start reading from 2nd line ... (2 Replies)
Discussion started by: venu
2 Replies

8. Shell Programming and Scripting

Read .txt file and dropping lines starting with #

Hi All, I have a .txt file with some contents as below: Hi How are you? # Fine and you? I want a script file which reads the .txt file and output the lines which does not start with #. Hi How are you? Help is highly appreciated. Please use code tags when posting data and... (5 Replies)
Discussion started by: bghosh
5 Replies

9. Shell Programming and Scripting

bash: read file line by line (lines have '\0') - not full line has read???

I am using the while-loop to read a file. The file has lines with null-terminated strings (words, actually.) What I have by that reading - just a first word up to '\0'! I need to have whole string up to 'new line' - (LF, 10#10, 16#A) What I am doing wrong? #make file 'grb' with... (6 Replies)
Discussion started by: alex_5161
6 Replies

10. UNIX for Dummies Questions & Answers

How to skip first line from a file while manupulating the file

I need to put single quotes on the columns of a .csv file. The first row contains the column headers. I need to skip the first row and put quotes for rest of the rows. Would please someone help me with this. Thanks JP (4 Replies)
Discussion started by: JPalt
4 Replies
Login or Register to Ask a Question