Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Sorting arrays horizontally without END section, awk Post 302709165 by lucasvs on Tuesday 2nd of October 2012 08:36:06 PM
Old 10-02-2012
alister: this task will be part of a function as I have to repeat it multiple times. Can a function refer to rules written in an END block?

Rudic: Thanks for your help. I understand the approach you are using. However the sort command doesn't work for me inside the script, so I tried asort function instead.
Code:
BEGIN{FS=OFS="|"}

{
    array = a[$1$2$3]
    n = asort(array, descending)
    for(u in array){
        print array[u] FS $4
    }
}

in order to get:
Code:
ref001, Europe, Spain, 203
ref001, Europe, Germany, 457
ref001, Europe, Belgium, 1001
ref002, America, US, 87
ref002, America, Canada, 234
ref002, America, Alaska, 652

but it returns an error message telling me the first argument is not an array. Is it doable with multiple fields at once?

Once I will manage to do that maybe I could do:
{
array[$1$2] = (array[$1$2] ? array[$1$2] : $1 FS $2) FS $3 FS $4

print array[$1$2]
}
but it will probably return:
Code:
ref001, Europe, Spain, 203
ref001, Europe, Spain, 203, Germany, 457
ref001, Europe, Spain, 203, Germany, 457, Belgium, 1001
ref002, America, US, 87
ref002, America, US, 87, Canada, 234
ref002, America, US, 87, Canada, 234, Alaska, 652

Then keep only the last occurrence of the line with the same "$1 FS $2", by sing:
Code:
{
    max = array[$1$2]++
    if(array[$1$2] = max){
        print $0
}

Or doing all these steps in reverse order and use horizontal sorting...

Last edited by jim mcnamara; 10-03-2012 at 12:17 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed & awk--get section of file based 2 params

I need to get a section of a file based on 2 params. I want the part of the file between param 1 & 2. I have tried a bunch of ways and just can't seem to get it right. Can someone please help me out.....its much appreciated. Here is what I have found that looks like what I want....but doesn't... (12 Replies)
Discussion started by: Andy Cook
12 Replies

2. Shell Programming and Scripting

Sorting rules on a text section

Hi all My text file looks like this: start doc ... (certain number of records) REC3|Emma|info| REC3|Lukas|info| REC3|Arthur|info| ... (certain number of records) end doc start doc ... (certain number of records)... (4 Replies)
Discussion started by: Indalecio
4 Replies

3. Shell Programming and Scripting

Extract section of file based on word in section

I have a list of Servers in no particular order as follows: virtualMachines="IIBSBS IIBVICDMS01 IIBVICMA01"And I am generating some output from a pre-existing script that gives me the following (this is a sample output selection). 9/17/2010 8:00:05 PM: Normal backup using VDRBACKUPS... (2 Replies)
Discussion started by: jelloir
2 Replies

4. Shell Programming and Scripting

how to get one particular section (using awk)?

Hey, I have a problem about how to get one section of a file? I'm new to shell, but by reading some tutorial, I think I can use awk to do this. my input file: >ref|ZP_04937576.1| ECRINAEDPKTFMPSPGKVKHFHAPGGNGVRVDSHLYSGYSVPPNYDSLVGKVITYGAD DEALARMRNALDELIVDGIKTNTELHKDLVRDAAFCKGGVNIHYLE... (11 Replies)
Discussion started by: ritacc
11 Replies

5. Shell Programming and Scripting

Sort each row (horizontally) in AWK or any

Hello, How to sort each row in a document with numerical values and with more than one row. Example Input data (file1.txt): 4 6 8 1 7 2 12 9 6 10 6 1 14 5 7 and I want the the output to look like this(file2.txt): 1 4 6 7 8 2 6 9 10 12 1 5 6 7 14 I've tried sort -n file1.txt >... (12 Replies)
Discussion started by: joseamck
12 Replies

6. Shell Programming and Scripting

using awk to get specific section of lines in logs

i have a log file that has the date and time that looks like this: Wed Jun 28 15:46:21 2012 test failed tailed passed passed not error panic what we want to focus on is the first 5 columns because they contain the date and time. the date and time can be anywhere on the line. in this... (6 Replies)
Discussion started by: SkySmart
6 Replies

7. Shell Programming and Scripting

Warning while sorting : A newline character was added to the end of file

Hi, I am trying to sort a csv file which has say 10 lines each line having a row size that is upto 30183 no. of COLUMNS (Row length = 30183). There is a LINE FEED (LF) at the end of each line. When I try to sort this file say, based on the second FIELD using the below command, sort -t ',' +1... (5 Replies)
Discussion started by: DHeisenberg
5 Replies

8. Shell Programming and Scripting

IF section problem. syntax error: unexpected end of file error

Hello, I have another problem with my script. Please accept my apologies, but I am really nooby in sh scripts. I am writing it for first time. My script: returned=`tail -50 SapLogs.log | grep -i "Error"` echo $returned if ; then echo "There is no errors in the logs" fi And after... (10 Replies)
Discussion started by: jedzio
10 Replies

9. UNIX for Beginners Questions & Answers

Sorting blocks by a section of the identifier

I have a file that should be sorted by a string (shown in red in my example below) in the identifier. The RS is ^@M0, something like this: @M04961:22:000000000-B5VGJ:1:1101:9280:7106 1:N:0:86 GGCATGAAAACATACAAACCGTCTTTCCAGAAATTGTTCCAAGTATCGGCAACAGCTTTATCAATACCATGAAAAATATCAACCACACCAGAAGCAGCAT... (16 Replies)
Discussion started by: Xterra
16 Replies

10. Shell Programming and Scripting

awk to parse section of csv into array

In the awk below I am trying to parse the Sample Name below the section. The values that are extracted are read into array s(each value in a row seperated by a space) which will be used later in a bash script. The awk does execute but no values are printed. I am also not sure how to print in a row... (1 Reply)
Discussion started by: cmccabe
1 Replies
DATEFMT_FORMAT(3)							 1							 DATEFMT_FORMAT(3)

IntlDateFormatter::format - Format the date/time value as a string

	Object oriented style

SYNOPSIS
public string IntlDateFormatter::format (mixed $value) DESCRIPTION
Procedural style string datefmt_format (IntlDateFormatter $fmt, mixed $value) Formats the time value as a string. PARAMETERS
o $fmt - The date formatter resource. o $value - Value to format. This may be a DateTime object, an IntlCalendar object, a numeric type representing a (possibly fractional) num- ber of seconds since epoch or an array in the format output by localtime(3). If a DateTime or an IntlCalendar object is passed, its timezone is not considered. The object will be formatted using the formaters configured timezone. If one wants to use the timezone of the object to be formatted, IntlDateFormatter.setTimeZone(3) must be called before with the objects timezone. Alterna- tively, the static function datefmt_formatObject(3) may be used instead. RETURN VALUES
The formatted string or, if an error occurred, FALSE. CHANGELOG
+-----------------+---------------------------------------------------+ | Version | | | | | | | Description | | | | +-----------------+---------------------------------------------------+ |5.5.0/PECL 3.0.0 | | | | | | | Support for providing IntlCalendar objects to | | | the $value parameter was added. | | | | | 5.3.4 | | | | | | | Support for providing DateTime objects to the | | | $value parameter was added. | | | | +-----------------+---------------------------------------------------+ EXAMPLES
Example #1 datefmt_format(3) example <?php $fmt = datefmt_create( 'en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN ); echo 'First Formatted output is ' . datefmt_format($fmt, 0); $fmt = datefmt_create( 'de-DE', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN ); echo 'Second Formatted output is ' . datefmt_format($fmt, 0); $fmt = datefmt_create( 'en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN, 'MM/dd/yyyy' ); echo 'First Formatted output with pattern is ' . datefmt_format($fmt, 0); $fmt = datefmt_create( 'de-DE', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN, 'MM/dd/yyyy' ); echo "Second Formatted output with pattern is " . datefmt_format($fmt, 0); ?> Example #2 OO example <?php $fmt = new IntlDateFormatter( 'en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN ); echo 'First Formatted output is ' . $fmt->format(0); $fmt = new IntlDateFormatter( 'de-DE', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN ); echo 'Second Formatted output is ' . $fmt->format(0); $fmt = new IntlDateFormatter( 'en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN, 'MM/dd/yyyy' ); echo 'First Formatted output with pattern is ' . $fmt->format(0); $fmt = new IntlDateFormatter( 'de-DE', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN, 'MM/dd/yyyy' ); echo 'Second Formatted output with pattern is ' . $fmt->format(0); ?> The above example will output: First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00 First Formatted output with pattern is 12/31/1969 Second Formatted output with pattern is 12/31/1969 Example #3 With IntlCalendar object <?php $tz = reset(iterator_to_array(IntlTimeZone::createEnumeration('FR'))); $formatter = IntlDateFormatter::create( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL, $tz, IntlDateFormatter::GREGORIAN ); $cal = IntlCalendar::createInstance($tz, '@calendar=islamic-civil'); $cal->set(IntlCalendar::FIELD_MONTH, 8); //9th month, Ramadan $cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 1); //1st day $cal->clear(IntlCalendar::FIELD_HOUR_OF_DAY); $cal->clear(IntlCalendar::FIELD_MINUTE); $cal->clear(IntlCalendar::FIELD_SECOND); $cal->clear(IntlCalendar::FIELD_MILLISECOND); echo "In this islamic year, Ramadan started/will start on: ", $formatter->format($cal), " "; //Its the formatters timezone that is used: $formatter->setTimeZone('Asia/Tokyo'); echo "After changing timezone: ", $formatter->format($cal), " "; The above example will output: In this islamic year, Ramadan started/will start on: mardi 9 juillet 2013 19:00:00 heure avancee d'Europe centrale After changing timezone: mercredi 10 juillet 2013 02:00:00 heure normale du Japon SEE ALSO
datefmt_create(3), datefmt_parse(3), datefmt_get_error_code(3), datefmt_get_error_message(3), datefmt_format_object(3). PHP Documentation Group DATEFMT_FORMAT(3)
All times are GMT -4. The time now is 03:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy