Need help in arranging data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help in arranging data
# 1  
Old 02-21-2015
Need help in arranging data

I have a file with user activity and need to display only the start and end timestamp of the activity. I don't know how can we write an logic for this please help me in a bettr way to work on it


Code:
 
User                         Activity_log
 -----------------------------------
 Auto_Generated      2014-08-17 15:25:03.333
 Auto_Generated      2014-08-17 15:25:03.333
 Auto_Generated      2014-08-17 15:25:03.348
 Auto_Generated      2014-08-17 15:25:03.348
 Auto_Generated      2014-08-17 15:25:03.365
 Auto_Generated      2014-08-17 15:25:03.365
 Auto_Generated      2014-08-17 15:25:03.379
 Auto_Generated      2014-08-17 15:25:03.379
 Jack   2014-08-17 15:25:50.273
 Jack   2014-08-17 15:25:50.313
 Jack   2014-08-17 15:25:54.433
 Jack   2014-08-17 15:25:54.91
 Jack   2014-08-17 15:25:54.922
 Jack   2014-08-17 15:25:54.938
 Jack   2014-08-17 15:25:54.952
 Jack   2014-08-17 15:25:54.982
 Jack   2014-08-17 15:25:55.022
 Jack   2014-08-17 15:26:02.26
 Jack   2014-08-17 15:26:02.28
 Kate   2014-08-19 11:12:31.206
 Kate   2014-08-19 11:12:31.246
 Kate   2014-08-19 11:12:31.337
 Kate   2014-08-19 11:12:31.386
 Kate   2014-08-19 11:12:31.446
 Kate   2014-08-19 11:43:43.795
 Kate   2014-08-19 11:43:59.876
 Kate   2014-08-19 11:43:59.888
 Kate   2014-08-19 11:43:59.916
 Kate   2014-08-19 11:43:59.941
 Tom    2014-08-19 12:56:31.306
 Tom    2014-08-19 12:56:37.892
 Tom    2014-08-19 12:56:38.779
 Tom    2014-08-19 12:56:38.798
 Tom    2014-08-19 12:56:38.82
 System      2014-08-24 07:00:35.574
 System      2014-08-24 07:00:35.577
 System      2014-08-24 07:00:35.578
 System      2014-08-24 07:00:35.587
 System      2014-08-24 07:00:35.595
 System      2014-08-24 07:00:35.618
 Kate   2014-12-23 08:22:17.949
 Kate   2014-12-23 08:22:17.958
 Kate   2014-12-23 08:22:17.989
 Kate   2014-12-23 08:22:18.013
Rita 2014-08-24 11:06:38.593
Rita 2014-08-24 11:06:44.816
Rita 2014-08-24 11:06:44.848
Rita 2014-08-24 11:06:44.862
Rita 2014-08-24 11:06:44.888

Code:
 
Required Output 
Jack   2014-08-17 15:25:50.273   2014-08-17 15:26:02.28
Kate   2014-08-19 11:12:31.206   2014-08-19 11:43:59.941 
Tom    2014-08-19 12:56:31.306   2014-08-19 12:56:38.82
Kate    2014-12-23 08:22:17.949   2014-12-23 08:22:18.013
Rita   2014-08-24 11:06:38.593   2014-08-24 11:06:44.888


Last edited by Scrutinizer; 02-21-2015 at 10:53 AM.. Reason: quote tags -> code tags
# 2  
Old 02-21-2015
Try

Code:
awk 'NF==3 && $1!=p{if(p)print pl; printf $0 OFS}NF==3{p=$1; pl=$2 FS $3}END{print pl}' infile

to skip line with string Auto_Generated try this

Code:
awk '/Auto_Generated/{next}NF==3 && $1!=p{if(p)print pl; printf $0 OFS}NF==3{p=$1; pl=$2 FS $3}END{print pl}' infile

# 3  
Old 02-21-2015
Quote:
Originally Posted by Akshay Hegde
Try

Code:
awk 'NF==3 && $1!=p{if(p)print pl; printf $0 OFS}NF==3{p=$1; pl=$2 FS $3}END{print pl}' infile

to skip line with string Auto_Generated try this

Code:
awk '/Auto_Generated/{next}NF==3 && $1!=p{if(p)print pl; printf $0 OFS}NF==3{p=$1; pl=$2 FS $3}END{print pl}' infile


Tried with a simple file but it didn't return any data

Code:
 
> cat sam.out
Avinash 2015-01-02-15.25.28.993000
Avinash 2015-01-02-15.25.29.018000
Avinash 2015-01-02-15.25.29.376000
Avinash 2015-01-02-15.25.29.388000

Code:
 
> awk 'NF==3 && $1!=p{if(p)print pl; printf $0 OFS}NF==3{p=$1; pl=$2 FS $3}END{print pl}' sam.out

# 4  
Old 02-21-2015
No surprise, data format in post #1 and post #3 are not same

Try this

Code:
 awk '$1!=p{if(p)print pl; printf $0 OFS}{p=$1; pl=$2}END{print pl}' infile

Quote:
Originally Posted by lazydev
Tried with a simple file but it didn't return any data

Code:
 
> cat sam.out
Avinash 2015-01-02-15.25.28.993000
Avinash 2015-01-02-15.25.29.018000
Avinash 2015-01-02-15.25.29.376000
Avinash 2015-01-02-15.25.29.388000

Code:
 
> awk 'NF==3 && $1!=p{if(p)print pl; printf $0 OFS}NF==3{p=$1; pl=$2 FS $3}END{print pl}' sam.out

Quote:
Originally Posted by lazydev
I have a file with user activity and need to display only the start and end timestamp of the activity. I don't know how can we write an logic for this please help me in a bettr way to work on it


Code:
 
User                         Activity_log
 -----------------------------------
 Auto_Generated      2014-08-17 15:25:03.333
 Auto_Generated      2014-08-17 15:25:03.333
 Auto_Generated      2014-08-17 15:25:03.348
 Auto_Generated      2014-08-17 15:25:03.348
 Auto_Generated      2014-08-17 15:25:03.365
 Auto_Generated      2014-08-17 15:25:03.365
 Auto_Generated      2014-08-17 15:25:03.379
 Auto_Generated      2014-08-17 15:25:03.379
 Jack   2014-08-17 15:25:50.273
 Jack   2014-08-17 15:25:50.313
 Jack   2014-08-17 15:25:54.433
 Jack   2014-08-17 15:25:54.91
 Jack   2014-08-17 15:25:54.922
 Jack   2014-08-17 15:25:54.938
 Jack   2014-08-17 15:25:54.952
 Jack   2014-08-17 15:25:54.982
 Jack   2014-08-17 15:25:55.022
 Jack   2014-08-17 15:26:02.26
 Jack   2014-08-17 15:26:02.28
 Kate   2014-08-19 11:12:31.206
 Kate   2014-08-19 11:12:31.246
 Kate   2014-08-19 11:12:31.337
 Kate   2014-08-19 11:12:31.386
 Kate   2014-08-19 11:12:31.446
 Kate   2014-08-19 11:43:43.795
 Kate   2014-08-19 11:43:59.876
 Kate   2014-08-19 11:43:59.888
 Kate   2014-08-19 11:43:59.916
 Kate   2014-08-19 11:43:59.941
 Tom    2014-08-19 12:56:31.306
 Tom    2014-08-19 12:56:37.892
 Tom    2014-08-19 12:56:38.779
 Tom    2014-08-19 12:56:38.798
 Tom    2014-08-19 12:56:38.82
 System      2014-08-24 07:00:35.574
 System      2014-08-24 07:00:35.577
 System      2014-08-24 07:00:35.578
 System      2014-08-24 07:00:35.587
 System      2014-08-24 07:00:35.595
 System      2014-08-24 07:00:35.618
 Kate   2014-12-23 08:22:17.949
 Kate   2014-12-23 08:22:17.958
 Kate   2014-12-23 08:22:17.989
 Kate   2014-12-23 08:22:18.013
Rita 2014-08-24 11:06:38.593
Rita 2014-08-24 11:06:44.816
Rita 2014-08-24 11:06:44.848
Rita 2014-08-24 11:06:44.862
Rita 2014-08-24 11:06:44.888

Code:
 
Required Output 
Jack   2014-08-17 15:25:50.273   2014-08-17 15:26:02.28
Kate   2014-08-19 11:12:31.206   2014-08-19 11:43:59.941 
Tom    2014-08-19 12:56:31.306   2014-08-19 12:56:38.82
Kate    2014-12-23 08:22:17.949   2014-12-23 08:22:18.013
Rita   2014-08-24 11:06:38.593   2014-08-24 11:06:44.888

This User Gave Thanks to Akshay Hegde For This Post:
# 5  
Old 02-21-2015
Slight variation to Akshay's approach:
Code:
awk 'NR<3{next} $1!=p{if(p)print s, r; s=$0; p=$1} {r=$2 OFS $3} END{print s, r}'  file

--
Note, when using printf it is best to not leave printf's format field open, so printf "%s ", $0, or printf "%s", $0 OFS rather than printf $0 OFS

Last edited by Scrutinizer; 02-21-2015 at 09:39 PM..
# 6  
Old 02-22-2015
Lazydev, is the data ordered by user and by time? Or was that just the sample you provided?

Variation to Scrutinizer approach for ordered by time, but not by user (aka, a logfile) data, an awkscript (with whitespace!) for your consideration:
Code:
BEGIN {
  skip["Auto_Generated"];
  skip["System"];
}

$1 in skip { next; }
           { et[$1] = $2; }
$1 in user { next; }
           { user[$1]; st[$1] = $2; }

END        { for (u in user) print u, st[u], et[u]; }

If the data has the date and time in two fields, change $2 to $2 FS $3 or to $2 OFS $3.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Help arranging text

By using this code how can we get the stars in inverted positions? str="*" for i in 1 2 3 4 5 do echo "$str" str="$str *" done The output should be like this * * * * * * * * * * * * * * * Please use CODE tags as required by forum rules!... (5 Replies)
Discussion started by: Meeran Rizvi
5 Replies

2. Shell Programming and Scripting

Arranging output for 2 commands

I am trying to run 2 sets of commands but want their output in a particular format. The 2 commands are : md5sum $WAR_DIR/$war and java -jar $WAR_DIR/$war | grep build.release.version | awk '{print $3}' The first command gives an output of 5f5261a33b92a36f80218cf14e8271ad ... (4 Replies)
Discussion started by: Junaid Subhani
4 Replies

3. UNIX for Dummies Questions & Answers

Arranging columns in a line

Hi, Please give a solution... Current File 200101701 A 5 B 283 D 222 200085506 A 5 B 6 C 304 200081406 A 5 200101784 D 1111Desired Output 200101701 A 0005 B 0283 * * D 222 ... (4 Replies)
Discussion started by: satyar
4 Replies

4. Shell Programming and Scripting

Need Help in arranging the output

Hello All, Please find attached input and output files. I want to write a shell script to achieve this. I tried using awk but not getting how to do this as I am new to shell programming. Thanks (4 Replies)
Discussion started by: Sudeep Bhattad
4 Replies

5. UNIX for Dummies Questions & Answers

Arranging data

I have thousand lines of data...: A 1 B 2 C 3 D 4 E 5 A 21 B 22 C 23 D 24 E 25 A 31 B 32 C 33 D 34 E 35 ........... ON AND AND ON (3 Replies)
Discussion started by: bobo
3 Replies

6. Shell Programming and Scripting

arranging columns with AWK

Hi there! Can this be done with AWK? Several text files (file1, file2, etc) with different number of lines. Need to append each file to a Reference File (ReFile), and match each line of file1, file2 etc to the closest value in ReFile. Empty cells must be filled with NA, or 0. The number of lines... (2 Replies)
Discussion started by: sramirez
2 Replies

7. Shell Programming and Scripting

need help in arranging the alias

Hello Guys, I have around 100 hosts setup as alias in my profile for easy sshing. alias ada='ssh -Y username@da.domain.com' alias ast='ssh -Y username@terix.domain.com' alias bb1='ssh -X username@ggserver.ns.domain.com' . . . . I now would like to use sshmenu software in which... (4 Replies)
Discussion started by: upengan78
4 Replies

8. UNIX for Dummies Questions & Answers

Re-arranging lines of text... help?

Hello, I am new to Linux, and I am learning slowly but for surely. I am trying to currently figure out how to go about re-arranging lines of text of a *.txt file... Like for example: Say pool.txt has 20 lines of text, and the last 5 lines of text I want to move to the top of the *.txt file... (2 Replies)
Discussion started by: shorte85
2 Replies

9. Shell Programming and Scripting

Arranging files

Hi all, This is program to identify and arrange programs(scripts) based on their she-bang values to a folder with the same name. The parts of mkdir and copy and creating problems.I also doubt the use of hash...maybe some problems in it. Please help out debugging this. Code pasted at: Paste... (2 Replies)
Discussion started by: Vivek788
2 Replies

10. Shell Programming and Scripting

Help with arranging data file

Dears, I have the below data, sss-aaaaaa 111211 222222 33333 22222 1163111 sss-vvvvvv 111311 224522 335633 24322 111511 sss-cccccc 111221 224522 333333 24322 111511 sss-dddddd 111211 222222 33333 22345222 113111 I want to make them like ... (7 Replies)
Discussion started by: yahyaaa
7 Replies
Login or Register to Ask a Question