Sponsored Content
Top Forums Shell Programming and Scripting Reading and writing in same file Post 302697283 by RudiC on Thursday 6th of September 2012 11:55:33 AM
Old 09-06-2012
While each of Don Cragun's arguments holds true, just for the exercise I'm trying to infer the logics from your first post: field 4 is the link that glues together two records, of which field 2 is filled with "none1111" if the system did not have the correct value yet by the time of file creation. Both records need to be included at their original location in the file, and "none1111" needs to be replaced by the correct value found later in the same file for field 4. I'm sure there will be much more elegant solutions, but, as you are grepping several times, so do I. We need to run through the input file at least three times - a) to find the field 4 values, b) to find the field 2 values, and c) to replace. Step b) will be repeated for every pattern occurrence in the ifile. Here we go:
Code:
grep none1111 infile |
      { IFS=","; while read a b c d; do grep $d infile |
            { while read e f g h; do [ $f != 'none1111' ] &&
                  echo s/none1111\\\(.*$h\\\)/$f\\1/ >>sedfile; done;
            }; done
      }; sed -f sedfile infile; rm sedfile

Well, this one would remove the problem of repeated grep runs using xargs (whose known problem hopefully won't hit us in this case):
Code:
grep none1111 infile |
      { IFS=","; while read a b c d; do echo -n $d"|"; done; echo "#"; } |
      xargs -I xy grep -E "xy" infile |
      { IFS=","; while read e f g h; do [ $f != 'none1111' ] &&  echo s/none1111\\\(.*$h\\\)/$f\\1/ >>sedfile; done; }
      sed -f sedfile infile; rm sedfile

And, finally, a "oneliner" in which all parameters for sed are being created in a command substitution:
Code:
sed $(
      grep none1111 infile | cut -d, -f4 | xargs -Ixy grep xy infile | cut -d, -f2,4 | grep -v none1111 |
      sed 's/\(.*\),\(.*\)/-e s#none1111\\\(.*\\\)\2#\1\\1\2#/'
     ) infile

Like awk better? Try this:
Code:
awk     'BEGIN {FS=OFS=","}
         {n = split($0, g); j++; for (i=1; i<=n; i++) h[j,i]=g[i]}
         !  /none1111/ {f[$4]=$2}
         END {for (i=1; i<=j; i++) print h[i,1], h[i,2]=="none1111" ? f[h[i,4]] : h[i,2], h[i,3], h[i,4]}
        '  infile


Last edited by RudiC; 09-06-2012 at 03:09 PM..
 

10 More Discussions You Might Find Interesting

1. Programming

Reading and Writing file on LAN

Hi gurus I am not a C programmer but I need to read and write files on a computer on LAN using IP address. Suppose on a computer that has an IP 192.168.0.2 Any help or code example. I did in JAVA using URL, but do not know how to do in ANSI-C. In java: ------- URL url = new... (3 Replies)
Discussion started by: lucky001
3 Replies

2. UNIX for Advanced & Expert Users

Reading a file and writing the file name to a param file.

Hi All, Not sure if this would be in a dummies sectiin or advanced. I'm looking for a script if someone has doen something like this. I have list of files - adc_earnedpoints.20070630.txt adc_earnedpoints.20070707.txt adc_earnedpoints.20070714.txt adc_earnedpoints.20070721.txt... (1 Reply)
Discussion started by: thebeginer
1 Replies

3. UNIX for Dummies Questions & Answers

reading ,writing,appending ,manipulating a file.

Hi my prob statement is to create a new file or to append to the 1tst file the followign chages. File 1: txt file. portfolio No a b c d abc 1 Any Any Any charString cds 2 values values values charString efd 3 can can can charString fdg 4 come come come charString... (4 Replies)
Discussion started by: szchmaltz
4 Replies

4. UNIX for Dummies Questions & Answers

Log File Writing and Reading

Hi all, I have the following shell script code which tries to sftp and writes the log into the log file. TestConnection () { echo 'Connection to ' $DESTUSERNAME@$DESTHOSTNAME $SETDEBUG if ]; then rm $SCRIPT ; fi touch $SCRIPT echo "cd" $REMOTEDIR >> $SCRIPT echo "quit" >>... (10 Replies)
Discussion started by: valluvan
10 Replies

5. Programming

I need help with file reading/writing in C

Hello everybody, I'm trying to code a program which makes the following: It sends an ARP request frame and when it gets the reply, extracts the IP address of source and writes it to a .txt file. This is gonna be done with many hosts (with a for() loop), so, the text file would look like... (2 Replies)
Discussion started by: Zykl0n-B
2 Replies

6. Shell Programming and Scripting

Reading data from DataBase and Writing to a file

Hi All, Please help me in writing data to a file in one row. In database there is a column which contains large data which does not fit in the file in one row. The column contains list of paths. I want to write these paths to a file in one row. Please find the code below writes : ... (2 Replies)
Discussion started by: rajeshorpu
2 Replies

7. Shell Programming and Scripting

Searching for Log / Bad file and Reading and writing to a flat file

Need to develop a unix shell script for the below requirement and I need your assistance: 1) search for file.log and file.bad file in a directory and read them 2) pull out "Load_Start_Time", "Data_File_Name", "Error_Type" from log file 4) concatinate each row from bad file as... (3 Replies)
Discussion started by: mlpathir
3 Replies

8. Programming

unexpected values received when writing and reading from file

In the code below i try to write and read from a file, but i get unexpected results, like after writing i cannot open the file, and when reading the file the value entered earlier is not shown bool creat_fragments(int nFragment) { int fd, rand_value; char frag_path, buf; for(int... (8 Replies)
Discussion started by: saman_glorious
8 Replies

9. Shell Programming and Scripting

reading a file extracting information writing to a file

Hi I am trying to extract information out of a file but keep getting grep cant open errors the code is below: #bash #extract orders with blank address details # # obtain the current date # set today to the current date ccyymmdd format today=`date +%c%m%d | cut -c24-31` echo... (8 Replies)
Discussion started by: Bruble
8 Replies

10. Shell Programming and Scripting

Reading and Writing a conf file - Suggestions and improvements?

Hello all As part of my TUI - (line based) Text User Interface, i do have 2 commands to assist working with conf files. Now, for me they work, but since i wrote them, i automaticly use them they way they should be used... you know what i mean. ;) Anyway, they are designed to read 'simple'... (3 Replies)
Discussion started by: sea
3 Replies
ZGREP(1)						      General Commands Manual							  ZGREP(1)

NAME
zgrep - search possibly compressed files for a regular expression SYNOPSIS
zgrep [ grep_options ] [ -e ] pattern filename... DESCRIPTION
Zgrep invokes grep on compressed or gzipped files. These grep options will cause zgrep to terminate with an error code: (-[drRzZ]|--di*|--exc*|--inc*|--rec*|--nu*). All other options specified are passed directly to grep. If no file is specified, then the standard input is decompressed if necessary and fed to grep. Otherwise the given files are uncompressed if necessary and fed to grep. If the GREP environment variable is set, zgrep uses it as the grep program to be invoked. EXIT CODE
2 - An option that is not supported was specified. AUTHOR
Charles Levert (charles@comm.polymtl.ca) SEE ALSO
grep(1), gzexe(1), gzip(1), zdiff(1), zforce(1), zmore(1), znew(1) ZGREP(1)
All times are GMT -4. The time now is 10:32 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy