Grepping a timestamp range and assigning it to a constant


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grepping a timestamp range and assigning it to a constant
# 22  
Old 03-24-2017
This version only prints lines with a matching 'CUT N'.
Code:
awk -F"[,:]" -v OFS="," '{
        sub(/^0/, "", $2);      # Remove leading zero
        C=$2 + 0
        N=0
        if( (C >= (12+3)) && (C <= (12+5))) N=1;
        else if( (C >= (12+6)) && (C <= (12+10))) N=2;
        else if( (C >= 0) && (C <= 2)) N=3;
        $3=sprintf("CUT %d", N);# Set column 2 to "CUT N"
        NF=3                    # Set number of columns to 2
} N' data3

This version generates 'CUT 0' for all others.

Code:
awk -F"[,:]" -v OFS="," '{
        sub(/^0/, "", $2);      # Remove leading zero
        C=$2 + 0
        N=0
        if( (C >= (12+3)) && (C <= (12+5))) N=1;
        else if( (C >= (12+6)) && (C <= (12+10))) N=2;
        else if( (C >= 0) && (C <= 2)) N=3;
        $3=sprintf("CUT %d", N);# Set column 2 to "CUT N"
        NF=3                    # Set number of columns to 2
}' data3

# 23  
Old 03-24-2017
No offense, it just won't work right when we don't know what you want.
# 24  
Old 03-24-2017
Try
Code:
awk -F, 'BEGIN {split ("3,3,3,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,0", B); B[0] = 3} {print $1, "CUT " B[$2+0]}' file



EDIT: or, even better:

Code:
awk -F, 'BEGIN {split ("3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,0", B)} {print $1, "CUT " B[$2+1]}' file

These 2 Users Gave Thanks to RudiC For This Post:
# 25  
Old 03-27-2017
Quote:
Originally Posted by RudiC
Try
Code:
awk -F, 'BEGIN {split ("3,3,3,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,0", B); B[0] = 3} {print $1, "CUT " B[$2+0]}' file



EDIT: or, even better:

Code:
awk -F, 'BEGIN {split ("3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,0", B)} {print $1, "CUT " B[$2+1]}' file

amazing. thanks a lot, but can you please tell me what the above command means. I'm using the 2nd command. Tried googling the split command and syntax simply comes up with and array and field separator, which by it self makes sense but I couldn't understand the split usage above
# 26  
Old 03-27-2017
That little script is taking advantage of some of awk's idiosyncrasies / default behaviour. It creates a 24 element array B by splitting the given string using the (default if ommitted: scriptwide) field separator (here: set to ","). In the print statement, the index is calculated by interpreting $2's (timestamp) contents up to the first non-digit char (":") as a number (default behaviour), and adding 1, mapping e.g. 00:xx:xx to index 1.
# 27  
Old 03-27-2017
Quote:
Originally Posted by RudiC
That little script is taking advantage of some of awk's idiosyncrasies / default behaviour. It creates a 24 element array B by splitting the given string using the (default if ommitted: scriptwide) field separator (here: set to ","). In the print statement, the index is calculated by interpreting $2's (timestamp) contents up to the first non-digit char (":") as a number (default behaviour), and adding 1, mapping e.g. 00:xx:xx to index 1.
hi, im trying hard to understand why did you use a 24 element array; on what basis have you formulated the array; what basis are you calculating the index value and then printing it out as the different CUTs, but unfortunately I m not able to understand. Can you please advise?
# 28  
Old 03-27-2017
A day has 24 hours; you want to assign a certain value to each hour, a linear relationship that could be calculated has been rejected; so I put the desired values as defined by YOU into a 24 element array and have it indexed by the hour (using awk features) for output.
Look e.g. what you requested for 3pm (15h) and see what B[15] is.
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep lines between last hour timestamp and current timestamp

So basically I have a log file and each line in this log file starts with a timestamp: MON DD HH:MM:SS SEP 15 07:30:01 I need to grep all the lines between last hour timestamp and current timestamp. Then these lines will be moved to a tmp file from which I will grep for particular strings. ... (1 Reply)
Discussion started by: nms
1 Replies

2. Homework & Coursework Questions

IP Range Assigning

THIS IS A SAMPLE PRACTICAL EXAM QUESTION, COMPLETE FILE HAS BEEN ATTACHED AS WELL. Hi All, I'm a bit confused about assigning IP address from IP Ranges. I am using this scenario below to understand. Scenario Adatum.com an international IT solutions company, is launching 12 new branches in a... (10 Replies)
Discussion started by: TryllZ
10 Replies

3. IP Networking

IP Range Assigning

Hi All, I'm a bit confused about assigning IP address from IP Ranges. I am using this scenario below to understand. Scenario Adatum.com an international IT solutions company, is launching 12 new branches in a new country where they currently have no existing branches. The sWin CIO has asked... (3 Replies)
Discussion started by: TryllZ
3 Replies

4. Shell Programming and Scripting

AIX : Need to convert UNIX Timestamp to normal timestamp

Hello , I am working on AIX. I have to convert Unix timestamp to normal timestamp. Below is the file. The Unix timestamp will always be preceded by EFFECTIVE_TIME as first field as shown and there could be multiple EFFECTIVE_TIME in the file : 3.txt Contents of... (6 Replies)
Discussion started by: rahul2662
6 Replies

5. Shell Programming and Scripting

To check timestamp in logfile and display lines upto 3 hours before current timestamp

Hi Friends, I have the following logfile. Currently time in india is 07/31/2014 12:33:34 and i have the following content in logfile. I want to display only those entries which contain string 'Exception' within last 3 hours. In this case, it would be the last line only I can get the... (12 Replies)
Discussion started by: srkmish
12 Replies

6. Programming

grepping a range of values

I need to return all records in a file starting with a row that says TABLE: <tabl name> lists of hexadecimal records TABLE: <some table> TABLe is a key word in the file. I know the name of the table I want to start with. I do not know the name of the table that I will end with. I just... (4 Replies)
Discussion started by: guessingo
4 Replies

7. UNIX for Dummies Questions & Answers

How to compare a file by its timestamp and store in a different location whenever timestamp changes?

Hi All, I am new to unix programming. I am trying for a requirement and the requirement goes like this..... I have a test folder. Which tracks log files. After certain time, the log file is getting overwritten by another file (randomly as the time interval is not periodic). I need to preserve... (2 Replies)
Discussion started by: mailsara
2 Replies
Login or Register to Ask a Question