Read help


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Read help
# 1  
Old 04-29-2010
Read help

im doing a

Code:
while read file
do
<code>

done < file > output

loop.

however i have a list of text with 4 columns each. And i have successfully organised it the way i wanted to the output. It's almost perfect but it doesn't read the last line if the last is not followed by a newline character.

example
Code:
4324325 3 4 0
4324344 3 4 4
3432434 1 2 2

output
Code:
4324325 3 4 0
4324344 3 4 4

So is there a way to detect the EOF with sed? I will probably want to add a newline before i output it to a new file.

---------- Post updated at 02:52 AM ---------- Previous update was at 02:25 AM ----------

here's my attempt at it. i tried adding multiple \n at the end but it only did one?

Code:
cat temp3 | sed "s/ [0-10]{0,2}$/[0-10]{0,2}$\n /"

# 2  
Old 04-29-2010
Why not simply use:
Code:
cat file|while read Line
do
<code>

done

# 3  
Old 04-29-2010
Before you run your while/read loop on the file you could add the missing \n in the last line with:
Code:
sed '$s/$/\n/g' infile

And no need to cat files into tools, that can read files their own or by redirection Smilie Smilie
# 4  
Old 04-29-2010
Alternatively:
Code:
(cat file;echo)|while read line
do
   <code>
done > output

edit: Hmm, this doesn't work. Scrutinizer got it right in the next posting.

Last edited by jlliagre; 04-29-2010 at 08:33 AM..
# 5  
Old 04-29-2010
How about:
Code:
while read line || [ -n "$line" ]
do 
  <code> 
done < file > output

I think this works for both eol and non-eol terminated files

Last edited by Scrutinizer; 04-29-2010 at 07:13 AM..
# 6  
Old 04-29-2010
oops sorry. I'm not allowed to use cat. I just used it above so that i would output the result to the screen instead of m opening up the file.

i used
Code:
sed '$s/$/\n/g' infile

but i get an extra character n printed for some reason.

---------- Post updated at 05:13 AM ---------- Previous update was at 05:10 AM ----------

Quote:
Originally Posted by Scrutinizer
How about:
Code:
while read line || [ -n "$line" ]
do 
  <code> 
done < file > output

I think this works for both eol and non-eol terminated files
sorry that didn't work. I'm still missing my last row.
# 7  
Old 04-29-2010
Strange I tested it and it worked everytime... Could you do an od -c or od -a of your input file and post the last line?
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Bash] Read History function & Read Arrowkeys

Hi. How can I create a history function? (By "read" command or so) & How can I configure a read command so that the arrow keys are not displayed so funny? (^[[A) Thanks in advance. (4 Replies)
Discussion started by: sinnlosername
4 Replies

2. Shell Programming and Scripting

Read from file and execute the read command

Hi, I am facing issues with the below: I have a lookup file say lookup.lkp.This lookup.lkp file contains strings delimited by comma(,). Now i want to read this command from file and execute it. So my code below is : Contents in the lookup.lkp file is : c_e,m,a,`cd $BOX | ls cef_*|tail... (7 Replies)
Discussion started by: vital_parsley
7 Replies

3. Shell Programming and Scripting

Help with Bash piped while-read and a read user input at the same time

Hi I am new to writing script and want to use a Bash Piped while-read and read from user input. if something happens on server.log then do while loop or if something happend on user input then do while loop. Pseudocode something like: tail -n 3 -f server.log | while read serverline || read... (8 Replies)
Discussion started by: MyMorris
8 Replies

4. Shell Programming and Scripting

How to read log files from last read

Hi i am looking a way to look at a log file(log.txt) from the last time I've read it. However after some days the main log file(log.txt) is rename to (log.txt.1). So now i will have two log files as below. log.txt.1 log.txt Now, i have to read the log from the point where i have left... (3 Replies)
Discussion started by: sumitsks
3 Replies

5. UNIX for Dummies Questions & Answers

When reading a csv file, counter to read 20 lines and wait for minute then read next 20 till end

Hello All, i am a newbie and need some help when reading a csv file in a bourne shell script. I want to read 10 lines, then wait for a minute and then do a reading of another 10 lines and so on in the same way. I want to do this till the end of file. Any inputs are appreciated ... (3 Replies)
Discussion started by: victor.s
3 Replies

6. UNIX for Dummies Questions & Answers

Read statement within while read loop

hi, this is my script #!/bin/ksh cat temp_file.dat | while read line do read test if ]; then break else echo "ERROR" fi done when i execute this code , the script does wait for the user input . it directly prints "ERROR" and terminates after the no. of times as there... (3 Replies)
Discussion started by: siva1612
3 Replies

7. Shell Programming and Scripting

Read Embedded Newline characters with read (builtin) in KSH93

Hi Guys, Happy New Year to you all! I have a requirement to read an embedded new-line using KSH's read builtin. Here is what I am trying to do: run_sql "select guestid, address, email from guest" | while read id addr email do ## Biz logic goes here done I can take care of any... (6 Replies)
Discussion started by: a_programmer
6 Replies

8. UNIX for Advanced & Expert Users

read() wont allow me to read files larger than 2 gig (on a 64bit)

Hi the following c-code utilizing the 'read()' man 2 read method cant read in files larger that 2gig. Hi I've found a strange problem on ubuntu64bit, that limits the data you are allowed to allocate on a 64bit platform using the c function 'read()' The following program wont allow to allocate... (14 Replies)
Discussion started by: monkeyking
14 Replies

9. Programming

Cannot read a file with read(fd, buffer, buffersize) function

# include <stdio.h> # include <fcntl.h> # include <stdlib.h> # include <sys/stat.h> int main(int argc, char *argv) { int fRead, fPadded, padVal; int btRead; int BUFFSIZE = 512; char buff; if (argc != 4) { printf ("Please provide all of the... (3 Replies)
Discussion started by: naranja18she
3 Replies

10. Shell Programming and Scripting

Can I use read to read content of a variable

Can I use the read command to read the contents of a variable? I'm trying by using the following code and getting nothing back. I'm in a Linux environment. #!/bin/ksh IFS=~ VAR1=1~2~3~4 echo $VAR1 | read a b c d print "$a $b $c $d" (9 Replies)
Discussion started by: nmalencia
9 Replies
Login or Register to Ask a Question