Sponsored Content
Top Forums Shell Programming and Scripting awk problem - combining awk statements Post 302782885 by SkySmart on Tuesday 19th of March 2013 02:15:35 PM
Old 03-19-2013
Quote:
Originally Posted by Corona688
Are you sure it's not strftime(...,$4) ? $3 is not an epoch time, but $4 looks like one.

You can combine them certainly:

Code:
awk '($9 >= 11) && !/-OLDISSUES/ { ...}'

I can fill things out in more detail if you explain what this does, I'm unfamiliar with this syntax:
Code:
${AWK} "/${MONTH} ${DAY} ${TIMEH}:.*:.*/,0"

thanks for responding. field three is actually in epoch time, but when you run the
Code:
"'{$3=strftime("%a %b %d %T %Y,%s",$3)}1' OFS=, "

on it, it translate it into what is shown above.

the
Code:
${AWK} "/${MONTH} ${DAY} ${TIMEH}:.*:.*/,0"

is to print all lines it finds under the first line that matches "MONTH DAY TIME". for instance, "Mar 19 18:.*:.*".

my problem is that the number of fields in each line in the datafile changes depending on a number.

so while the awk is printing all lines it finds under "Mar 19 18:", i want it to also run condition check. so for each line, i want to do something like this: "if field 9 of this line i'm currently reading is greater than 11", then print this, else, print this." this is where i get lost.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk compound statements

how can i use two or multiple statements in the if part of an awk code for example i want to check two flag if they are true i will write some print operations and increase the counter. here is the c version of the code that i want to write: counter=0; if (flag1==1 && flag2==0) {... (7 Replies)
Discussion started by: gfhgfnhhn
7 Replies

2. Shell Programming and Scripting

Help a newbie please with awk if else statements

Hi, Despite reading the Conditional Statements chapter in the O'Reilly Sed & Awk book several times and looking at numerous examples, I cannot for the life of me get any kind of if ... else statement to work in my awk scripts! My scripts work perfectly (as they are written at least) and do what... (4 Replies)
Discussion started by: jonathanm
4 Replies

3. Shell Programming and Scripting

Combine awk statements

I have an awk statement that works but I am calling awk twice and I know there has to be a way to combine the two statements into one. The purpose is to pull out just the ip address from loopback1. cat config.txt | nawk 'BEGIN {FS="\n"}{RS="!"}{if ( $0 ~ "interface loopback1" ) print$4}' | nawk... (5 Replies)
Discussion started by: numele
5 Replies

4. Shell Programming and Scripting

Combining awk statements

I have a pretty simple script below: #!/bin/sh for i in *.cfg do temp=`awk '/^InputDirectory=/' ${i}` input_dir=`echo ${temp} | awk '{ print substr( $0, 16) }'` echo ${input_dir} done As you can see its opening each cfg file and searching for the line that has "InputDirectory="... (3 Replies)
Discussion started by: ssbsts
3 Replies

5. Shell Programming and Scripting

Combining AWK statements

Hello UNIX Community, I have file that contains the following data: testAwk2.csv rabbit penguin goat giraffe emu ostrich hyena elephant panda dog cat pig lizard snake antelope platypus tiger cheetah lion rhino spider I then find the character length of the... (1 Reply)
Discussion started by: vnayak
1 Replies

6. UNIX for Dummies Questions & Answers

AWK w/ if statements failing.

I'm converting some code from ksh on my macbook (Version M 1993-12-28 s+) to an older solaris machine with ksh 88. I can't seem to figure out this line, it worked on the new shell version. set -A combo -- $(for x in ${ImageIDs}; do nawk -v s=$x 'if($2 == s) getline ; getline if ($1 ==... (2 Replies)
Discussion started by: nerdcurious
2 Replies

7. UNIX for Dummies Questions & Answers

Combine two awk statements into one

Hi, I have the following two awk statements which I'd like to consolidate into one by piping the output from the first into the second awk statement (rather than having to write kat.txt out to a file and then reading back in). awk 'BEGIN {FS=OFS=" "} {printf("%s ", $2);for (x=7; x<=10;... (3 Replies)
Discussion started by: kasan0
3 Replies

8. Shell Programming and Scripting

combining multiple sed statements

I need to run a cronjob that will monitor a directory for files with a certain extension, when one appears I then need to run the below scripts How do I go about combining the following sed statements into one script? and also retain the original filename.? sed 's/71502FSC1206/\n&/g' # add a... (2 Replies)
Discussion started by: firefox2k2
2 Replies

9. Shell Programming and Scripting

Nested awk Statements

Hello again everyone, yes, I'm back again for more help! So I'm attempting to read two separate files and generate some XML code from that. My current code is: BEGIN { print "<?xml version=\"1.0\" encoding=\"utf-8\">" print "<Export>" } { x=1; print "<section name=\"Query" NR "\">"... (5 Replies)
Discussion started by: Parrakarry
5 Replies

10. Shell Programming and Scripting

awk with many if statements

Hi What is the right structure to use awk with multiple If statements The following code doesn't work # awk ' { A = $1 } END { for ( i = 1; i <= c; i++ ) { if ( A == 236 && A ==199... (7 Replies)
Discussion started by: khaled79
7 Replies
Date::ISO8601(3pm)					User Contributed Perl Documentation					Date::ISO8601(3pm)

NAME
Date::ISO8601 - the three ISO 8601 numerical calendars SYNOPSIS
use Date::ISO8601 qw(present_y); print present_y($y); use Date::ISO8601 qw(month_days cjdn_to_ymd ymd_to_cjdn present_ymd); $md = month_days(2000, 2); ($y, $m, $d) = cjdn_to_ymd(2406029); $cjdn = ymd_to_cjdn(1875, 5, 20); print present_ymd(2406029); print present_ymd(1875, 5, 20); use Date::ISO8601 qw(year_days cjdn_to_yd yd_to_cjdn present_yd); $yd = year_days(2000); ($y, $d) = cjdn_to_yd(2406029); $cjdn = yd_to_cjdn(1875, 140); print present_yd(2406029); print present_yd(1875, 140); use Date::ISO8601 qw(year_weeks cjdn_to_ywd ywd_to_cjdn present_ywd); $yw = year_weeks(2000); ($y, $w, $d) = cjdn_to_ywd(2406029); $cjdn = ywd_to_cjdn(1875, 20, 4); print present_ywd(2406029); print present_ywd(1875, 20, 4); DESCRIPTION
The international standard ISO 8601 "Data elements and interchange formats - Information interchange - Representation of dates and times" defines three distinct calendars by which days can be labelled. It also defines textual formats for the representation of dates in these calendars. This module provides functions to convert dates between these three calendars and Chronological Julian Day Numbers, which is a suitable format to do arithmetic with. It also supplies functions that describe the shape of these calendars, to assist in calendrical calculations. It also supplies functions to represent dates textually in the ISO 8601 formats. ISO 8601 also covers time of day and time periods, but this module does nothing relating to those parts of the standard; this is only about labelling days. The first ISO 8601 calendar divides time up into years, months, and days. It corresponds exactly to the Gregorian calendar, invented by Aloysius Lilius and promulgated by Pope Gregory XIII in the late sixteenth century, with AD (CE) year numbering. This calendar is applied to all time, not just to dates after its invention nor just to years 1 and later. Thus for ancient dates it is the proleptic Gregorian calendar with astronomical year numbering. The second ISO 8601 calendar divides time up into the same years as the first, but divides the year directly into days, with no months. The standard calls this "ordinal dates". Ordinal dates are commonly referred to as "Julian dates", a mistake apparently deriving from true Julian Day Numbers, which divide time up solely into linearly counted days. The third ISO 8601 calendar divides time up into years, weeks, and days. The years approximate the years of the first two calendars, so they stay in step in the long term, but the boundaries differ. This week-based calendar is sometimes called "the ISO calendar", apparently in the belief that ISO 8601 does not define any other. It is also referred to as "business dates", because it is most used by certain businesses to whom the week is the most important temporal cycle. The Chronological Julian Day Number is an integral number labelling each day, where the day extends from midnight to midnight in whatever time zone is of interest. It is a linear count of days, where each day's number is one greater than the previous day's number. It is directly related to the Julian Date system: in the time zone of the prime meridian, the CJDN equals the JD at noon. By way of epoch, the day on which the Convention of the Metre was signed, which ISO 8601 defines to be 1875-05-20 (and 1875-140 and 1875-W20-4), is CJDN 2406029. This module places no limit on the range of dates to which it may be applied. All function arguments are permitted to be "Math::BigInt" or "Math::BigRat" objects in order to achieve arbitrary range. Native Perl integers are also permitted, as a convenience when the range of dates being handled is known to be sufficiently small. FUNCTIONS
Numbers in this API may be native Perl integers, "Math::BigInt" objects, or integer-valued "Math::BigRat" objects. All three types are acceptable for all parameters, in any combination. In all conversion functions, the most-significant part of the result (which is the only part with unlimited range) is of the same type as the most-significant part of the input. Less-significant parts of results (which have a small range) are consistently native Perl integers. All functions "die" if given invalid parameters. Years present_y(YEAR) Puts the given year number into ISO 8601 textual presentation format. For years [0, 9999] this is simply four digits. For years outside that range it is a sign followed by at least four digits. This is the minimum-length presentation format. If it is desired to use a form that is longer than necessary, such as to use at least five digits for all year numbers (as the Long Now Foundation does), then the right tool is "sprintf" (see "sprintf" in perlfunc). This format is unconditionally conformant to all versions of ISO 8601 for years [1583, 9999]. For years [0, 1582], preceding the historical introduction of the Gregorian calendar, it is conformant only where it is mutually agreed that such dates (represented in the proleptic Gregorian calendar) are acceptable. For years outside the range [0, 9999], where the expanded format must be used, the result is only conformant to ISO 8601:2004 (earlier versions lacked these formats), and only where it is mutually agreed to use this format. Gregorian calendar Each year is divided into twelve months, numbered [1, 12]; month number 1 is January. Each month is divided into days, numbered sequentially from 1. The month lengths are irregular. The year numbers have unlimited range. month_days(YEAR, MONTH) The parameters identify a month, and the function returns the number of days in that month as a native Perl integer. cjdn_to_ymd(CJDN) This function takes a Chronological Julian Day Number and returns a list of a year, month, and day. ymd_to_cjdn(YEAR, MONTH, DAY) This performs the reverse of the translation that "cjdn_to_ymd" does. It takes year, month, and day numbers, and returns the corresponding CJDN. present_ymd(CJDN) present_ymd(YEAR, MONTH, DAY) Puts the given date into ISO 8601 Gregorian textual presentation format. The `extended' format (with "-" separators) is used. The conformance notes for "present_y" apply to this function also. If the date is given as a (YEAR, MONTH, DAY) triplet then these are not checked for consistency. The MONTH and DAY values are only checked to ensure that they fit into the fixed number of digits. This allows the use of this function on data other than actual Gregorian dates. Ordinal dates Each year is divided into days, numbered sequentially from 1. The year lengths are irregular. The years correspond exactly to those of the Gregorian calendar. year_days(YEAR) The parameter identifies a year, and the function returns the number of days in that year as a native Perl integer. cjdn_to_yd(CJDN) This function takes a Chronological Julian Day Number and returns a list of a year and ordinal day. yd_to_cjdn(YEAR, DAY) This performs the reverse of the translation that "cjdn_to_yd" does. It takes year and ordinal day numbers, and returns the corresponding CJDN. present_yd(CJDN) present_yd(YEAR, DAY) Puts the given date into ISO 8601 ordinal textual presentation format. The `extended' format (with "-" separators) is used. The conformance notes for "present_y" apply to this function also. If the date is given as a (YEAR, DAY) pair then these are not checked for consistency. The DAY value is only checked to ensure that it fits into the fixed number of digits. This allows the use of this function on data other than actual ordinal dates. Week-based calendar Each year is divided into weeks, numbered sequentially from 1. Each week is divided into seven days, numbered [1, 7]; day number 1 is Monday. The year lengths are irregular. The year numbers have unlimited range. The years correspond to those of the Gregorian calendar. Each week is associated with the Gregorian year that contains its Thursday and hence contains the majority of its days. year_weeks(YEAR) The parameter identifies a year, and the function returns the number of weeks in that year as a native Perl integer. cjdn_to_ywd(CJDN) This function takes a Chronological Julian Day Number and returns a list of a year, week, and day. ywd_to_cjdn(YEAR, WEEK, DAY) This performs the reverse of the translation that "cjdn_to_ywd" does. It takes year, week, and day numbers, and returns the corresponding CJDN. present_ywd(CJDN) present_ywd(YEAR, WEEK, DAY) Puts the given date into ISO 8601 week-based textual presentation format. The `extended' format (with "-" separators) is used. The conformance notes for "present_y" apply to this function also. If the date is given as a (YEAR, WEEK, DAY) triplet then these are not checked for consistency. The WEEK and DAY values are only checked to ensure that they fit into the fixed number of digits. This allows the use of this function on data other than actual week- based dates. SEE ALSO
Date::JD, DateTime AUTHOR
Andrew Main (Zefram) <zefram@fysh.org> COPYRIGHT
Copyright (C) 2006, 2007, 2009 Andrew Main (Zefram) <zefram@fysh.org> LICENSE
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.1 2010-03-30 Date::ISO8601(3pm)
All times are GMT -4. The time now is 05:58 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy