Sponsored Content
Full Discussion: Manipulating two files
Top Forums UNIX for Advanced & Expert Users Manipulating two files Post 302099153 by Perderabo on Saturday 9th of December 2006 07:47:46 AM
Old 12-09-2006
This ksh script seems to work with your posted data:
Code:
#! /usr/bin/ksh

exec < file1.txt
integer saved limit
saved=0
limit=1000

#
#  read a line and break it into fields
while IFS="" read line ; do
        tmp=${line#?????????}
        field1=${line%$tmp}
        line="$tmp"
        tmp=${line#????}
        field2=${line%$tmp}
        line="$tmp"
        tmp=${line#??}
        field3=${line%$tmp}
        line="$tmp"
        tmp=${line#????}
        field4=${line%$tmp}
        field5="$tmp"

#
#  If field2 is numeric we will use it to search for a new field4

        if [[ $field2 == +([0-9]) ]] ; then

#
#  See if we previously saved the data for this field2

                eval data=\${XX${field2}:-NOT_THERE}
                if [[ $data != NOT_THERE ]] ; then
                        field4="$data"
                else

#
#  See if we can find field2 in the second file

                        if data=$(grep "^${field2}," file2.txt) ; then
                                data=${data##*,}
                                echo found data = $data
                                field4="$data"

#
#  Save the first $limit records we find in memory to avoid re-examining the file each time

                                if ((saved<limit)) ; then
                                        ((saved=saved+1))
                                        eval XX${field2}=\${data}
                                fi
                        fi
                fi
        fi
        echo "${field1}${field2}${field3}${field4}${field5}"
done
exit 0

I don't believe that I have ever used a statement like:
if data=$(grep "^${field2}," file2.txt) ; then
before. It is a cool technique.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Can I make "touch" create executable files by manipulating umask?

I'm getting to grips with this concept of the umask. What I thought was, setting umask uga+rwx would result in creating files with all permissions for everyone. Seems not to be the case though. Read and write bits get set, but not the execute bit. Is there some gap in my understanding, or is... (2 Replies)
Discussion started by: tphyahoo
2 Replies

2. Shell Programming and Scripting

csh: manipulating text files - please help!

Hi All, I am trying to manipulate a text file in a csh script I am writing. I just started scripting a few months ago and have NO idea how to get this to work. My ultimate goal is to turn a text file that looks like this: 4 ep2d_diff_mddw_20_p2-MOD err 128 128 64 62 52611737 2 ... (3 Replies)
Discussion started by: Torinator
3 Replies

3. Shell Programming and Scripting

Manipulating a file

Hi everybody, I need an urgent help with a BASH script. I have file which contains (besides the other data) the lines with the following structure identified by with keyword PCList: <PARAMETER NAME="PCList" TYPE="LIST_STRUCTURE" MODEL="{,}" ... (1 Reply)
Discussion started by: sameucho
1 Replies

4. Shell Programming and Scripting

need help on manipulating a file

Hi, I need a shell/command to achieve this task. I've a delimited unloaded file from oracle in a scrambled format as shown below with many blank lines in it, I'm just trying to tailor it in a format that would be compatible to view and load it to a IDS db. Here is the problem ... (1 Reply)
Discussion started by: divak
1 Replies

5. UNIX for Dummies Questions & Answers

Manipulating files

Hi Guys, I'm really new to Unix and Linux and other scripting languages but recently I hv been really enthusiatic about learning more to help out on my work. So I have a file with 3 columns. A sample of it looks like looks like this : K2_537841 AAATCAGCCGCAACATTTGC ... (7 Replies)
Discussion started by: pawannoel
7 Replies

6. Shell Programming and Scripting

reading from two files and manipulating the data

hi i have a file of the following format FILE1 5 937 8 1860 1850 1 683 2 1 129 2 2 5 938 8 1122 1123 1 20 520 4 1860 1851 1 5 939 8 1122 1124 1 20 521 4i have another file which... (3 Replies)
Discussion started by: vaibhavkorde
3 Replies

7. Shell Programming and Scripting

copying and manipulating files

im copying alot of files this is a script im trying to modify but not sure how to make it copy files without an extension and then add a .txt to them abc= #assuming the file does not have an end or extension foo='abc$' FROM=/user/share/doc TO=~/home/doc for grep $foo in... (3 Replies)
Discussion started by: elginmulizwa
3 Replies

8. Shell Programming and Scripting

Manipulating Columns!

Hello Experts, I have .txt file which has various columns and 4 rows. cat input.txt Cont x y z k Max 0.3 0.9 0.4 0.6 Min 0.2 0.9 0.3 0.6 Diff 0.1 0 0.1 0 Output: Cont x y z k Max 0.5 1.1 0.6 0.8 Min 0.1 0.7 0.2 0.4 Diff 0.4 0.4 0.4 0.4 That means if the diff between the Max and... (2 Replies)
Discussion started by: dixits
2 Replies

9. Shell Programming and Scripting

Manipulating audio files server side

Hi All, I have next to zero knowledge on what I am about to ask so I will just ask it in plain English :) I am wondering how best to go about manipulating audio files server side. The manipulations required are join files one after the other, eg, audio1 + audio2 + audio3 + audio4 = audio5 ... (0 Replies)
Discussion started by: linuxgoat
0 Replies

10. Shell Programming and Scripting

Manipulating files

Not sure if the question posted in another forums can be moved by me.So posting the link here. https://www.unix.com/unix-advanced-expert-users/221425-shell-script-manipulate-files.html#post302795379 Need your help here. (1 Reply)
Discussion started by: vedanta
1 Replies
copymsg(9F)						   Kernel Functions for Drivers 					       copymsg(9F)

NAME
copymsg - copy a message SYNOPSIS
#include <sys/stream.h> mblk_t *copymsg(mblk_t *mp); INTERFACE LEVEL
Architecture independent level 1 (DDI/DKI). PARAMETERS
mp Pointer to the message to be copied. DESCRIPTION
copymsg() forms a new message by allocating new message blocks, and copying the contents of the message referred to by mp (using the copyb(9F) function). It returns a pointer to the new message. RETURN VALUES
If the copy is successful, copymsg() returns a pointer to the new message. Otherwise, it returns a NULL pointer. CONTEXT
copymsg() can be called from user or interrupt context. EXAMPLES
Example 1: : Using copymsg The routine lctouc() converts all the lowercase ASCII characters in the message to uppercase. If the reference count is greater than one (line 8), then the message is shared, and must be copied before changing the contents of the data buffer. If the call to the copymsg() function fails (line 9), return NULL (line 10), otherwise, free the original message (line 11). If the reference count was equal to 1, the message can be modified. For each character (line 16) in each message block (line 15), if it is a lowercase letter, convert it to an upper- case letter (line 18). A pointer to the converted message is returned (line 21). 1 mblk_t *lctouc(mp) 2 mblk_t *mp; 3 { 4 mblk_t *cmp; 5 mblk_t *tmp; 6 unsigned char *cp; 7 8 if (mp->b_datap->db_ref > 1) { 9 if ((cmp = copymsg(mp)) == NULL) 10 return (NULL); 11 freemsg(mp); 12 } else { 13 cmp = mp; 14 } 15 for (tmp = cmp; tmp; tmp = tmp->b_cont) { 16 for (cp = tmp->b_rptr; cp < tmp->b_wptr; cp++) { 17 if ((*cp <= 'z') && (*cp >= 'a')) 18 *cp -= 0x20; 19 } 20 } 21 return(cmp); 22 } SEE ALSO
allocb(9F), copyb(9F), msgb(9S) Writing Device Drivers STREAMS Programming Guide SunOS 5.10 27 Jun 1995 copymsg(9F)
All times are GMT -4. The time now is 09:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy