Sponsored Content
Top Forums Programming Reading a particular line from a .txt file Post 302425811 by achenle on Sunday 30th of May 2010 12:34:29 PM
Old 05-30-2010
That's only going to work if you can guarantee each line fits into your buffer.

If you can do that, great. If not, you pretty much have to count newline characters. This works, and should be fairly fast as you'd be relying on the OS to page in the data, which should be fast enough. If it's a really big file, and you know you're only going through it once, it'd be faster to use open() and read() with direct IO set so you bypass any page cache (if you're only looking once at each byte of a bunch of gigabytes of data, any caching is wasted cycles):

Code:
struct stat sb;
int fd = open( filename, O_RDONLY );
fstat( fd, &sb );
char *ptr = mmap( NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0 );
uint64_t offset;
uint64_t line_count = 0;
uint64_t desired_line = 123455;

for ( offset = 0; offset < sb.st_size; offset++ )
{
    if ( '\n' == ptr[ offset ] )
    {
        line_count++;

        if ( line_count == desired_line )
        {
            break;
        }
    }
}

// if offset is less than file size, the desired line was found
if ( offset < sb.st_size )
{
    // line starts at offset + 1
    offset++;
        .
        .
        .
}

Note that has no error checking.
 

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
MEMCACHED_DECREMENT_WITH_INITIAL(3)				   libmemcached 			       MEMCACHED_DECREMENT_WITH_INITIAL(3)

NAME
memcached_decrement_with_initial - Incrementing and Decrementing Values SYNOPSIS
#include <libmemcached/memcached.h> memcached_return_t memcached_increment(memcached_st *ptr, const char *key, size_t key_length, uint32_t offset, uint64_t *value) memcached_return_t memcached_decrement(memcached_st *ptr, const char *key, size_t key_length, uint32_t offset, uint64_t *value) memcached_return_t memcached_increment_with_initial(memcached_st *ptr, const char *key, size_t key_length, uint64_t offset, uint64_t ini- tial, time_t expiration, uint64_t *value) memcached_return_t memcached_decrement_with_initial(memcached_st *ptr, const char *key, size_t key_length, uint64_t offset, uint64_t ini- tial, time_t expiration, uint64_t *value) memcached_return_t memcached_increment_by_key(memcached_st *ptr, const char *group_key, size_t group_key_length, const char *key, size_t key_length, uint32_t offset, uint64_t *value) memcached_return_t memcached_decrement_by_key(memcached_st *ptr, const char *group_key, size_t group_key_length, const char *key, size_t key_length, uint32_t offset, uint64_t *value) memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr, const char *group_key, size_t group_key_length, const char *key, size_t key_length, uint64_t offset, uint64_t initial, time_t expiration, uint64_t *value) memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, const char *group_key, size_t group_key_length, const char *key, size_t key_length, uint64_t offset, uint64_t initial, time_t expiration, uint64_t *value) Compile and link with -lmemcached DESCRIPTION
memcached(1) servers have the ability to increment and decrement keys (overflow and underflow are not detected). This gives you the ability to use memcached to generate shared sequences of values. memcached_increment takes a key and keylength and increments the value by the offset passed to it. The value is then returned via the uint32_t value pointer you pass to it. memcached_decrement takes a key and keylength and decrements the value by the offset passed to it. The value is then returned via the uint32_t value pointer you pass to it. memcached_increment_with_initial takes a key and keylength and increments the value by the offset passed to it. If the object specified by key does not exist, one of two things may happen: If the expiration value is MEMCACHED_EXPIRATION_NOT_ADD, the operation will fail. For all other expiration values, the operation will succeed by seeding the value for that key with a initial value to expire with the provided expiration time. The flags will be set to zero.The value is then returned via the uint32_t value pointer you pass to it. memcached_decrement_with_initial takes a key and keylength and decrements the value by the offset passed to it. If the object specified by key does not exist, one of two things may happen: If the expiration value is MEMCACHED_EXPIRATION_NOT_ADD, the operation will fail. For all other expiration values, the operation will succeed by seeding the value for that key with a initial value to expire with the provided expiration time. The flags will be set to zero.The value is then returned via the uint32_t value pointer you pass to it. memcached_increment_by_key(), memcached_decrement_by_key(), memcached_increment_with_initial_by_key(), and memcached_decrement_with_initial_by_key() are master key equivalents of the above. RETURN
A value of type memcached_return_t is returned. On success that value will be MEMCACHED_SUCCESS. Use memcached_strerror to translate this value to a printable string. HOME
To find out more information please check: http://libmemcached.org/ SEE ALSO
memcached(1) libmemcached(3) memcached_strerror(3) AUTHOR
Brian Aker COPYRIGHT
2011-2013, Brian Aker DataDifferential, http://datadifferential.com/ 1.0.16 January 31, 2013 MEMCACHED_DECREMENT_WITH_INITIAL(3)
All times are GMT -4. The time now is 01:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy