The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
How can i read a non text file in unix - ELF-64 executable object file - IA64 alexcol UNIX for Advanced & Expert Users 8 11-07-2008 08:56 AM
Read text file from a specified string to the end bsrajirs UNIX for Advanced & Expert Users 9 01-11-2008 01:05 AM
read specific text from a log file ragha81 Shell Programming and Scripting 4 10-17-2006 01:17 PM
need to read 3° character from a text file piltrafa UNIX for Dummies Questions & Answers 15 07-26-2005 10:19 AM
help with cshell script to read 1 or more lex files homerj546 Shell Programming and Scripting 1 04-18-2004 10:01 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-10-2009
phudgens phudgens is offline
Registered User
  
 

Join Date: Feb 2009
Location: Denver
Posts: 40
Read text file in Cshell

I've been searching the forums for info on reading a text file in a Cshell script but nothing I'm trying is working. My latest attempt was:

set LASInputFile = `ls *.[Ll][Aa][Ss] | head -1`
echo $LASInputFile
while read line
do
echo $line
done < $LASInputFile


My error message is: while: Expression syntax

Thanks for any help

Paul Hudgens
Denver
  #2 (permalink)  
Old 02-10-2009
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Location: Home of 17-time world champion Boston Celtics
Posts: 1,311
Question

Just a thought to begin this...
instead of your loop, can you replace it with a cat command?
I would just like to see if the file has anything to process
and/or if there is some kind of file error.
  #3 (permalink)  
Old 02-10-2009
quirkasaurus's Avatar
quirkasaurus quirkasaurus is offline
Registered User
  
 

Join Date: Jan 2009
Location: canton, michigan
Posts: 373
looks like you're combining flow expression syntax for different shells....
"read" is a Bourne / Korn shell built-in... not csh.

why not just this:

Code:
set LASInputFile = `ls *.[Ll][Aa][Ss] | head -1`
echo $LASInputFile
cat $LASInputFile
  #4 (permalink)  
Old 02-10-2009
phudgens phudgens is offline
Registered User
  
 

Join Date: Feb 2009
Location: Denver
Posts: 40
Thanks for the input. The cat command does display my file to the screen correctly. By the way, I'm not sure if I should reply to the user link or via Quick Reply.
  #5 (permalink)  
Old 02-10-2009
stanleypane stanleypane is offline
Registered User
  
 

Join Date: Mar 2008
Posts: 23
Code:
set LASInputFile = `ls *.[Ll][Aa][Ss] | head -1`

set i=`cat $LASInputFile | wc -l`
set j=1

while ($j <= $i)

  set line=`cat $LASInputFile | head -$j | tail -1`

  @ j = $j + 1

  # do your thing with $line here.
  # for this example, we'll just echo
  # it back the screen
 
  echo $line

end
  #6 (permalink)  
Old 02-11-2009
phudgens phudgens is offline
Registered User
  
 

Join Date: Feb 2009
Location: Denver
Posts: 40
I'm getting the error message: Unknown user: VERSION

The following is the first line of my file:
~VERSION

Some of the lines in my file begin with a tilde. Is that causing a problem? Also I'm setting i=100 since what I'm after is in the top 100 lines of an otherwise very long file.

set LASInputFile = `ls *.[Ll][Aa][Ss] | head -1`
echo $LASInputFile
set j=1
while ($j <= 100)
set line=`cat $LASInputFile | head -$j | tail -1`
@ j = $j + 1
echo $line
end

Thanks for the help,

Paul H.
  #7 (permalink)  
Old 02-11-2009
stanleypane stanleypane is offline
Registered User
  
 

Join Date: Mar 2008
Posts: 23
Sorry, I've made some slight changes to your script:

Code:
set LASInputFile = `ls *.[Ll][Aa][Ss] | head -1`
echo $LASInputFile
set j=1
while ($j <= 100)
set line="`cat $LASInputFile | head -$j | tail -1`"
@ j = $j + 1
echo "$line"
end
I put quotes around the "set line" and "echo" portions of the script. This will stop the shell from evaluating ~VERSION as if it was a home directory.
Sponsored Links
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -4. The time now is 07:59 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language translation by Google.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0