Sponsored Content
Top Forums Programming Reading a particular line from a .txt file Post 302425806 by jim mcnamara on Sunday 30th of May 2010 11:08:48 AM
Old 05-30-2010
When the lines are a fixed record length, you can call seek() or fseek() in C++, C to get to a known line position.
this is c:
Code:
void seek_to_line(FILE *in, const long recl, const long lineno)
{
     fseek(in, lineno * recl, SEEK_SET);
}

This places the file pointer at the beginning of lineno, assuming recl is fixed.

Otherwise you can try to optimize I/O (see Steven's Advanced Programming in the UBIX Environment) by increasing
buffersize
Code:
FILE *in=fopen("somefile, "r");
int lineno=250002;
char tmp[256]={0x0};
char buf[16384]={0x0};

setvbuf(in, buf, 16384, _IOFBF );
while(--lineno)
   fgets(tmp, sizeof(tmp), in);

you have to call setvbuf BEFORE any I/O on the stream

Last edited by jim mcnamara; 05-30-2010 at 12:16 PM..
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reading Characters from txt file

Hello, I am new to shell scripting, and I am trying to create a script that reads an input like the following firstname:lastname:age firstname:lastname:age firstname:lastname:age in a text file. I have a 2 part question. First how do I open the file in a shell script. And then how can... (7 Replies)
Discussion started by: TexasGuy
7 Replies

2. Shell Programming and Scripting

reading the txt file

hi to all im having some 20,000 files in that im having some contents say the tabulation of biophysics lab readings ... and i want read tat file and look into tat wether a number say -18.90 is there r not .. and if there print tat no wit file name beside thank you:D (1 Reply)
Discussion started by: maximas
1 Replies

3. Shell Programming and Scripting

[Solved] Problem in reading a file line by line till it reaches a white line

So, I want to read line-by-line a text file with unknown number of files.... So: a=1 b=1 while ; do b=`sed -n '$ap' test` a=`expr $a + 1` $here do something with b etc done the problem is that sed does not seem to recognise the $a, even when trying sed -n ' $a p' So, I cannot read... (3 Replies)
Discussion started by: hakermania
3 Replies

4. UNIX for Dummies Questions & Answers

C-Shell script help reading from txt file

I need to write a C-Shell script with these properties: It should accept two arguments on the command line. The first argument is the name of a file which contains a list of names, and the second argument is the name of a directory. For each file in the directory, the script should print the... (1 Reply)
Discussion started by: cerce
1 Replies

5. Shell Programming and Scripting

Reading text file, comparing a value in a line, and placing only part of the line in a variable?

I need some help. I would like to read in a text file. Take a variable such as ROW-D-01, compare it to what's in one line in the text file such as PROD/VM/ROW-D-01 and only input PROD/VM into a variable without the /ROW-D-01. Is this possible? any help is appreciated. (2 Replies)
Discussion started by: xChristopher
2 Replies

6. Shell Programming and Scripting

Need to append the date | abcddate.txt to the first line of my txt file

I want to add/append the info in the following format to my.txt file. 20130702|abcd20130702.txt FN|SN|DOB I tried the below script but it throws me some exceptions. <#!/bin/sh dt = date '+%y%m%d'members; echo $dt+|+members+$dt; /usr/bin/awk -f BEGIN { FS="|"; OFS="|"; } { print... (6 Replies)
Discussion started by: harik1982
6 Replies

7. Shell Programming and Scripting

Desired output.txt for reading txt file using awk?

Dear all, I have a huge txt file (DATA.txt) with the following content . From this txt file, I want the following output using some shell script. Any help is greatly appreciated. Greetings, emily DATA.txt (snippet of the huge text file) 407202849... (2 Replies)
Discussion started by: emily
2 Replies

8. UNIX for Dummies Questions & Answers

Split Every Line In Txt Into Separate Txt File, Named Same As The Line

Hi All Is there a way to export every line into new txt file where by the title of each txt output are same as the line ? I have this txt files containing names: Kandra Vanhooser Rhona Menefee Reynaldo Hutt Houston Rafferty Charmaine Lord Albertine Poucher Juana Maes Mitch Lobel... (2 Replies)
Discussion started by: Nexeu
2 Replies

9. Shell Programming and Scripting

' for reading (No such file or directory) `Solaris_websummary.txt

echo "1.1 Apply latest OS patches;" awk '/1.2 Install/ {P=0} P {print $0} FNR==1{printf("From file %s:\n", FILENAME)} /1.1 Apply/ {P=1}' solarisappsummary.txt solarisdbsummary.txt solaris_websummary.txt echo "1.2 Install TCP Wrappers;" awk '/1.3 Install/ {P=0} P {print $0}... (1 Reply)
Discussion started by: alvinoo
1 Replies
SETBUF(3)						   BSD Library Functions Manual 						 SETBUF(3)

NAME
setbuf, setbuffer, setlinebuf, setvbuf -- stream buffering operations LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <stdio.h> void setbuf(FILE * restrict stream, char * restrict buf); void setbuffer(FILE *stream, char *buf, size_t size); int setlinebuf(FILE *stream); int setvbuf(FILE * restrict stream, char * restrict buf, int mode, size_t size); DESCRIPTION
The three types of buffering available are unbuffered, block buffered, and line buffered. When an output stream is unbuffered, information appears on the destination file or terminal as soon as written; when it is block buffered many characters are saved up and written as a block; when it is line buffered characters are saved up until a newline is output or input is read from any stream attached to a terminal device (typically stdin). The function fflush(3) may be used to force the block out early. (See fclose(3).) Normally all files are block buffered. When the first I/O operation occurs on a file, malloc(3) is called, and an optimally-sized buffer is obtained. If a stream refers to a terminal (as stdout normally does) it is line buffered. The standard error stream stderr is initially unbuffered. The setvbuf() function may be used to alter the buffering behavior of a stream. The mode parameter must be one of the following three macros: _IONBF unbuffered _IOLBF line buffered _IOFBF fully buffered The size parameter may be given as zero to obtain deferred optimal-size buffer allocation as usual. If it is not zero, then except for unbuffered files, the buf argument should point to a buffer at least size bytes long; this buffer will be used instead of the current buffer. (If the size argument is not zero but buf is NULL, a buffer of the given size will be allocated immediately, and released on close. This is an extension to ANSI C; portable code should use a size of 0 with any NULL buffer.) The setvbuf() function may be used at any time, but may have peculiar side effects (such as discarding input or flushing output) if the stream is ``active''. Portable applications should call it only once on any given stream, and before any I/O is performed. The other three calls are, in effect, simply aliases for calls to setvbuf(). Except for the lack of a return value, the setbuf() function is exactly equivalent to the call setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); The setbuffer() function is the same, except that the size of the buffer is up to the caller, rather than being determined by the default BUFSIZ. The setlinebuf() function is exactly equivalent to the call: setvbuf(stream, (char *)NULL, _IOLBF, 0); RETURN VALUES
The setvbuf() function returns 0 on success, or EOF if the request cannot be honored (note that the stream is still functional in this case). The setlinebuf() function returns what the equivalent setvbuf() would have returned. SEE ALSO
fclose(3), fopen(3), fread(3), malloc(3), printf(3), puts(3) STANDARDS
The setbuf() and setvbuf() functions conform to ANSI X3.159-1989 (``ANSI C89''). BUGS
The setbuffer() and setlinebuf() functions are not portable to versions of BSD before 4.2BSD. On 4.2BSD and 4.3BSD systems, setbuf() always uses a suboptimal buffer size and should be avoided. BSD
June 4, 1993 BSD
All times are GMT -4. The time now is 10:45 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy