'c' shell scripts
    stan at teltone.UUCP 
    stan at teltone.UUCP
       
    Sun Dec 18 06:17:52 AEST 1983
    
    
  
# Here's 3 ways of indexing through a file's contents within a
# C shell script.  Assume the file name is "file".
# (you can even write all the below to some file and run csh on it)
#=================================================
echo "Method 1"
set f = ("`cat file`")	# makes f a list of elements, each being a line of file
# foreach line ($f)	# note that you can't do it with this foreach loop.
# 	echo "$line"
# end
@ linenum = 1
while ($linenum <= $#f)
 	echo "$f[$linenum]" # gets each line, including embedded white space.
 	# echo $f[$linenum]   # gets each line, embedded white space collapses
			    # to single spaces.
	@ linenum++
end
	# echo "$f[1]"	# gets the first line of the file
	# echo "$f[$#f]"	# gets the last line of the file
#------------------------------
# limitation on above is the length of the file. (approx. 10,290 bytes)
#=====================================================
echo "Method 2"
set linecount = `wc -l < file`		# have to use '<' here.
@ linenum = 1
while ($linenum <= $linecount)
	set line = "`awk 'NR == $linenum  {print;exit}' file`"
		    # above makes $line have a single string value.
			# note: $linenum will be expanded properly
	echo "$line"
	@ linenum++
end
#======================================================
# similar to above, but use 'sed', which might be (and probably is) faster
# than awk.
echo "Method 3"
set linecount = `wc -l < file`
@ linenum = 1
while ($linenum <= $linecount)
    # 2 backslashes at end of each of next 2 lines
set line = "`sed -n '$linenum{p\\
q\\
}' file`"
		# can't put comments after 2 lines with backslashes above
echo "$line"
@ linenum++
end
##### Whew!  Took a while to make all this to work, especially since I've
##### never required the csh to do this.
    
    
More information about the Comp.unix
mailing list