Sponsored Content
Top Forums Shell Programming and Scripting awk , conditional involving line and column Post 302602071 by agama on Saturday 25th of February 2012 10:17:16 PM
Old 02-25-2012
I think this will do what you want. Reads data1.txt and generates data2.txt and data3.txt. I was a bit confused with your example of data3 -- I assumed you meant that it should have anything not written to data2.txt.

Code:
awk '
    NR == 1 { print >"data2.txt"; print >"data3.txt"; next; }   # needed if there is a header line
    {
        if( $1 == "Si"  &&  $2+0 > simax )
            simax = $2 + 0      # take note of max value 

        capture[++idx] = $0;   # capture for output lines
        type[idx] = $1;            # save type and value for easy check at end
        value[idx] = $2+0;
    }

    END {
        for( i = 1; i <= idx; i++ )     # for each input line we saw put it someplace based on the z value 
        {
            dest = ((type[i] == "O" || type[i] == "H") && value[i] > simax ) ? "data2.txt" : "data3.txt";
            print capture[i] >dest;
        }
    }
' data1.txt


Last edited by agama; 02-26-2012 at 03:33 PM.. Reason: Realised your input has a header, didn't deal with that initially; consistency change on assignment of value.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

line to column using awk

hi, i'm a newbie and this is my first post here. 'hope all of you fellow members are doing fine. so here is my first thread to ask for help on how to use awk language to do this task. i have a file to process and after a series of other awk commands and shell scripts i managed to convert the... (11 Replies)
Discussion started by: genix2008
11 Replies

2. Shell Programming and Scripting

awk convert from line to column

i have an output like this : 012008 25760883 022008 12273095 032007 10103 032008 10115642 042007 20952798 but i would like to have it like this 012008,25760883 022008,12273095 032007,10103 032008,10115642 042007,20952798 (4 Replies)
Discussion started by: jarmouda
4 Replies

3. Shell Programming and Scripting

Conditional aggregation and print of a column in file

Hi My input file looks like field1 field2 field3 field4 field5 field1 field2 field3 field4 field5 field1 field2 field3 field4 field5 :::::::::::: :::::::::::: There may be one space of multiple spaces between fields and no fields contains spaces in them. If field 1 to 4 are equal for... (3 Replies)
Discussion started by: bittoo
3 Replies

4. Shell Programming and Scripting

Replace a column with a value conditional on a value in col1

Hi, Perhaps a rather simple problem...? I have data that looks like this. BPC0013 ANNUL_49610 0 0 1 1 BPC0014 ANNUL_49642 0 0 2 1 BPC0015 ANNUL_49580 0 0 1 1 BPC0016 ANNUL_49596 0 0 2 1 BPC0017 VULGO_49612 0 0 1 1 BPC0018 ANNUL_49628 0 0 1 1 BPC0019 ANNUL_49692 0 0 2 1 170291_HMG... (4 Replies)
Discussion started by: genehunter
4 Replies

5. Shell Programming and Scripting

awk search column, print line

Hello. I've been banging my head against walls trying to search a comma delimited file, using awk. I'm trying to search a "column" for a specific parameter, if it matches, then I'd like to print the whole line. I've read in multiple texts: awk -F, '{ if ($4 == "string") print $0 }'... (2 Replies)
Discussion started by: Matthias03
2 Replies

6. Shell Programming and Scripting

Counting rows line by line from a specific column using Awk

Dear UNIX community, I would like to to count characters from a specific row and have them displayed line-by-line. I have a file called testAwk2.csv which contain the following data: rabbit penguin goat giraffe emu ostrich I would like to count in the middle row individually... (4 Replies)
Discussion started by: vnayak
4 Replies

7. Shell Programming and Scripting

Awk next line as column

Hi, This forum rocks. I think this might be an easy thing, but since I am new to awk, please help me. input: x y z 1 a b c 2 d e f 3 g h i 7 output: x y z 1 a b c 2 d e f 3 (8 Replies)
Discussion started by: jacobs.smith
8 Replies

8. UNIX for Dummies Questions & Answers

awk help: how to pull phrase and one column from line above?

Hi everyone, Here's my awk statement so far: awk '/TOTAL TYPE:/{print x;print};{x=$0}' file1 >file2 'file1' has too much proprietary data in it to include here, so let's go with the output from code above. It looks like this: 123456 JAMES T KIRK D ... (2 Replies)
Discussion started by: Scottie1954
2 Replies

9. Shell Programming and Scripting

Filter on one column and then perform conditional calculations on another column with a Linux script

Hi, I have a file (stats.txt) with columns like in the example below. Destination IP address, timestamp, TCP packet sequence number and packet length. destIP time seqNo packetLength 1.2.3.4 0.01 123 500 1.2.3.5 0.03 44 1500 1.3.2.5 0.08 44 1500 1.2.3.4 0.44... (12 Replies)
Discussion started by: Zooma
12 Replies

10. Shell Programming and Scripting

Conditional Column Value

Hi Folks, I'm trying tog ain further experience with shell programming and have set my a small goal of writing a little filesystem monitoring script. So far my output is as follows: PACMYDB03 Filesystem Size Used Avail Use% Status /usr/local/mysql/data ... (5 Replies)
Discussion started by: Axleuk
5 Replies
FP2HDF(1)						      General Commands Manual							 FP2HDF(1)

NAME
fp2hdf - convert floating point data to HDF SYNOPSIS
fp2hdf -h[elp] fp2hdf infile [infile...] -o[utfile outfile] [-r[aster] [ras_options...]] [-f[loat]] DESCRIPTION
fp2hdf converts floating point data to HDF Scientific Data Set (SDS) and/or 8-bit Raster Image Set (RIS8) format, storing the results in an HDF file. The image data can be scaled about a mean value. Input file(s) contain a single two-dimensional or three-dimensional floating point array in either ASCII text, native floating point, or HDF SDS format. If an HDF file is used for input, it must contain an SDS. The SDS need only contain a dimension record and the data, but if it also contains maximum and minimum values and/or scales for each axis, these will be used. If the input format is ASCII text or native floating point, see "Notes" below on how it must be organized. OPTIONS
-h[elp] Print a helpful summary of usage, and exit. -o[utfile] outfile Data from one or more input files are stored as one or more data sets and/or images in one HDF output file, outfile. -r[aster] Store output as a raster image set in the output file -f[loat] Store output as a scientific data set in the the output file. This is the default if the "-r" option is not specified. ras_opts: -e[xpand] horiz vert [depth] Expand float data via pixel replication to produce the image(s). horiz and vert give the horizontal and vertical resolution of the image(s) to be produced; and optionally, depth gives the number of images or depth planes (for 3D input data). -i[nterp] horiz vert [depth] Apply bilinear, or trilinear, interpolation to the float data to produce the image(s). horiz, vert, and depth must be greater than or equal to the dimensions of the original dataset. -p[alfile] palfile Store the palette with the image. Get the palette from palfile; which may be an HDF file containing a palette, or a file containing a raw palette. -m[ean] mean If a floating point mean value is given, the image will be scaled about the mean. The new extremes (newmax and newmin), as given by: newmax = mean + max(abs(max-mean), abs(mean-min)) newmin = mean - max(abs(max-mean), abs(mean-min)) will be equidistant from the mean value. If no mean value is given, then the mean will be: 0.5 * (max + min) INPUT
If the input file format is ASCII text or native floating point, it must have the following input fields: format nplanes nrows ncols max_value min_value [plane1 plane2 plane3 ...] row1 row2 row3 ... col1 col2 col3 ... data1 data2 data3 ... ... Where: format Format designator ("TEXT", "FP32" or "FP64"). nplanes Dimension of the depth axis ("1" for 2D input). nrows Dimension of the vertical axis. ncols Dimension of the horizontal axis. max_value Maximum data value. min_value Minimum data value. plane1, plane2, plane3, ... Scales for depth axis. row1, row2, row3, ... Scales for the vertical axis. col1, col2, col3, ... Scales for the horizontal axis. data1, data2, data3, ... The data ordered by rows, left to right and top to bottom; then optionally, ordered by planes, front to back. For FP32 and FP64 input format, format, nplanes, nrows, ncols, and nplanes are native integers; where format is the integer repre- sentation of the appropriate 4-character string (0x46503332 for "FP32" and 0x46503634 for "FP64"). The remaining input fields are composed of native 32-bit floating point values for FP32 input format, or native 64-bit floating point values for FP64 input format. EXAMPLE
Convert floating point data in "f1.txt" to SDS format, and store it as an SDS in HDF file "o1": fp2hdf f1.txt -o o1 Convert floating point data in "f2.hdf" to 8-bit raster format, and store it as an RIS8 in HDF file "o2": fp2hdf f2.hdf -o o2 -r Convert floating point data in "f3.bin" to 8-bit raster format and SDS format, and store both the RIS8 and the SDS in HDF file "o3": fp2hdf f3.bin -o o3 -r -f Convert floating point data in "f4" to a 500x600 raster image, and store the RIS8 in HDF file "o4". Also store a palette from "palfile" with the image: fp2hdf f4 -o o4 -r -e 500 600 -p palfile Convert floating point data in "f5" to 200 planes of 500x600 raster images, and store the RIS8 in HDF file "o5". Also scale the image data so that it is centered about a mean value of 10.0: fp2hdf f5 -o o5 -r -i 500 600 200 -m 10.0 SEE ALSO
hdf(5) October 30, 1999 FP2HDF(1)
All times are GMT -4. The time now is 06:42 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy