Snarfing the date/time makes it a bit more complicated as the value has a space inside of the quotes. So, rewriting things a bit to allow for multiple tokens within quotes consider this brute force parsing example. You can use the date/time value as you need to. This just prints it out when it finds it.
Code:
#!/usr/bin/env ksh
awk -v RS=">" '
function snarf_vars( ) # capture all name=value pairs on the current line.
{
delete var;
gsub( " = ", "=" ); # easier to deal without spaces
for( i = 1; i <= NF; i ++ )
{
if( (x = split( $(i), a, "=" )) == 2 )
{
$(i) = a[2];
for( ; i <= NF; i++ ) # snarf up all tokens in the quotes
{
var[a[1]] = var[a[1]] $(i) " "; # capture next token
if( match( $(i), /"$/ ) ) # this has ending quote
{
gsub( "\"", "", var[a[1]] ); # one replace of all quotes (does not handle escaped quotes)
break;
}
}
}
}
}
/DateTime/{
snarf_vars();
printf( "%s \n", var["DateTime"] );
}
/Percent/ {
snarf_vars();
if( var["Price"] )
printf( "%c %6.3f %6.3f%%\n", 65+(idx++), var["Price"], var["Percent"]);
}' <test.xml
The function unsets the var array, so if you want the date/time value later you need to specifically save it or it will be gone. This also makes no attempt to preserve the whitespace that it might find between quotes; for your needs that'll be OK, but if you want to use this in other situations it might not do the job.
Hope this helps.
Last edited by agama; 09-22-2010 at 01:31 AM..
Reason: better, shorter, more simple, snarf function
Good morning. I have a piece of code that is currently taking multiple files and using the CAT.exe command to combine into one file that is then sorted in reverse order based on the 3rd field of the file, then displayed on screen. I am trying to change this so that the files are being combined into... (4 Replies)
Hi,
I have a space de-limited text file. In the fifth column, I would like to switch "1"s with "2"s. How do I go about doing that? Thanks!
Sample input:
0 311000259 0 0 1 1
0 311000397 0 0 1 2
0 311000491 0 0 2 1
0 311000516 0 0 2 1
0 311000541 0 0 1 1
0 311000558 0 0 2 1
0 311000566 0... (1 Reply)
Hi,
I have a problem where I need to make this input:
nameRow1a,text1a,text2a,floatValue1a,FloatValue2a,...,floatValue140a
nameRow1b,text1b,text2b,floatValue1b,FloatValue2b,...,floatValue140b
look like this output:
nameRow1a,text1b,text2a,(floatValue1a - floatValue1b),(floatValue2a -... (4 Replies)
Dear All,
i have a column with values in excel table:
ATGC22327-p66
ATGC15922-p239
ATGC12710-p21743567
ATGC08037-p186
ATGC07969-p173
ATGC07345-p48534
ATGC02767-p254234
ATGC02124-p2177451
ATGC02124-p1459
ATGC01930-p3005 I need to... (6 Replies)
Hello friends,
I have a text file with many columns (no. columns vary from row to row) separated by space. I need to collect all the values from 18th column to the end from each line and group them as pairs and then numbering like below..
1. 18th-col-value 19th-col-value 2. 20th-col-value ... (5 Replies)
Hi all:
quick question!
I have the following data that resembles some thing like this:
i am tired
tired am i
what is up
hello people cool
I want to count (or at least isolate) all of the unique elements in the 2nd column.
I have tried this:
cut -f 2 | uniq 'input'
which does... (3 Replies)
I have a file (let say file B) like this:
File B:
A1 3 5
A1 7 9
A2 2 5
A3 1 3
The first column defines a filename and the other two define a range in that specific file. In the same directory, I have also three more files (File A1, A2 and A3). Here is 10 sample lines... (3 Replies)
What im trying to do is sort the output by the number on the second column and than limit the result to only the first three lines.
This is the code
idlist="x23s52; f34233; 2343xs; 25x34; si342d"
cntr=1
idcnt=$(print $nidlist |tr ';' '\n' |wc -l)
numofgrps=0
while (($cntr <= $idcnt))... (3 Replies)
I have an xml file dumped from rrd file, that I want to "patch" so the xml file doesn't contain any blank hole in the resulting graph of the rrd file.
Here is the file.
<!-- 2015-10-12 14:00:00 WIB / 1444633200 --> <row><v> 4.0419731265e+07 </v><v> 4.5045912770e+06... (2 Replies)
Hi Team
I am using DB2 artisan tool and struck to handle multi values present in columns that are comma(,) separated. I want to convert those column values in separate rows .
For example :
Column 1 Column2
Jan,Feb Hold,Sell,Buy
Expected Result
Column1 ... (3 Replies)
Discussion started by: Perlbaby
3 Replies
LEARN ABOUT OPENSOLARIS
env
env(1) User Commands env(1)NAME
env - set environment for command invocation
SYNOPSIS
/usr/bin/env [-i | -] [name=value]... [utility [arg... ]]
/usr/xpg4/bin/env [-i | -] [name=value]...
[utility [arg... ]]
DESCRIPTION
The env utility obtains the current environment, modifies it according to its arguments, then invokes the utility named by the utility op-
erand with the modified environment.
Optional arguments are passed to utility. If no utility operand is specified, the resulting environment is written to the standard output,
with one name=value pair per line.
/usr/bin
If env executes commands with arguments, it uses the default shell /usr/bin/sh (see sh(1)).
/usr/xpg4/bin
If env executes commands with arguments, it uses /usr/xpg4/bin/sh (see ksh(1)).
OPTIONS
The following options are supported:
-i | - Ignores the environment that would otherwise be inherited from the current shell. Restricts the environment for utility to
that specified by the arguments.
OPERANDS
The following operands are supported:
name=value Arguments of the form name=value modify the execution environment, and are placed into the inherited environment before
utility is invoked.
utility The name of the utility to be invoked. If utility names any of the special shell built-in utilities, the results are unde-
fined.
arg A string to pass as an argument for the invoked utility.
EXAMPLES
Example 1 Invoking utilities with new PATH values
The following utility:
example% env -i PATH=/mybin mygrep xyz myfile
invokes the utility mygrep with a new PATH value as the only entry in its environment. In this case, PATH is used to locate mygrep, which
then must reside in /mybin.
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment variables that affect the execution of env: LANG, LC_ALL, LC_CTYPE, LC_MES-
SAGES, and NLSPATH.
PATH Determine the location of the utility. If PATH is specified as a name=value operand to env, the value given shall be used in the
search for utility.
EXIT STATUS
If utility is invoked, the exit status of env is the exit status of utility. Otherwise, the env utility returns one of the following exit
values:
0 Successful completion.
1-125 An error occurred.
126 utility was found but could not be invoked.
127 utility could not be found.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
/usr/bin
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
|CSI |enabled |
+-----------------------------+-----------------------------+
/usr/xpg4/bin
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWxcu4 |
+-----------------------------+-----------------------------+
|CSI |enabled |
+-----------------------------+-----------------------------+
|Interface Stability |Standard |
+-----------------------------+-----------------------------+
SEE ALSO ksh(1), sh(1), exec(2), profile(4), attributes(5), environ(5), standards(5)SunOS 5.11 2 Jan 2002 env(1)