Transpose into single record


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Transpose into single record
# 1  
Old 02-12-2020
Transpose into single record

Hi Guys,

I have a file like below format
Code:
/my_dir/logs 2018-08-02 15:19:54 accepted connection from 10.140.75.239
/my_dir/logs 2018-08-02 15:19:56 authentication failed for id '123': Authentication failure
/my_dir/logs 2018-08-02 15:19:56 accepted connection from 10.140.75.239
/my_dir/logs 2018-08-02 15:19:59 authentication failed for id '123': Authentication failure
/my_dir/logs 2018-08-02 15:20:58 accepted connection from 10.140.75.239
/my_dir/logs 2018-08-02 15:21:00 authentication failed for id '123': Authentication failure

I would need to transpose it to single line using Awk
Code:
id,login_status,ip,time
123,Failed,10.140.75.239,2018-08-02 15:19:56 
123,Failed,10.140.75.239,2018-08-02 15:19:59
123,Failed,10.140.75.239,2018-08-02 15:21:00

# 2  
Old 02-12-2020
Hello rohit_shinez,

In unix.com we encourage all users to do add their efforts which they have put to solve their own problem so kindly do add the same and let us know then.

Thanks,
R. Singh
# 3  
Old 02-12-2020
Quote:
Originally Posted by RavinderSingh13
Hello rohit_shinez,

In unix.com we encourage all users to do add their efforts which they have put to solve their own problem so kindly do add the same and let us know then.

Thanks,
R. Singh
Yes, and we also encourage people not to get hung up on using a single tool:

This is any easy task in PHP, OBTW.

But next time, as Ravinder mentioned, please at least TRY and post your own work FIRST before asking a question:

Code:
<?php
$file = file("/tmp/a.txt");
$line1 = $line2 = array();
$code = $ip = '';
echo "id,login_status,ip,time\n";
foreach ($file as $line) {
    $done = false;
    if (strpos($line, 'accepted') !== false) {
        $line1 = explode(' ', $line);
        $ip = str_replace("\n", "", $line1[6]);
    } elseif (strpos($line, 'failed') !== false) {
        $line2 = explode(' ', $line);
        $buf = str_replace("'", "", $line2[7]);
        $code = str_replace(":", "", $buf);
        $done = true;
    }
    if ($done) {
        $out = "$code,Failed,$ip,$line2[1] $line2[2]\n";
        echo $out;
    }
}

Code:
macos# php rohit_shinez.php
id,login_status,ip,time
123,Failed,10.140.75.239,2018-08-02 15:19:56
123,Failed,10.140.75.239,2018-08-02 15:19:59
123,Failed,10.140.75.239,2018-08-02 15:21:00

It's also an easy task in python as well, but I'll leave that up to you. Note: I don't process text files with awk, so I cannot help you there Smilie sorry. However, what I can say is that this post is the "last straw" and as of today, our forum rules are forever changed:

***************************************************************

Show your own work first, before asking a question! Do not go to the Internet asking people to write all your code for you!!

If you want a solution, in awk, post what you have attempted yourself in awk FIRST. Show YOUR own work..

Please note:

As mentioned, this post was "the final event" of people asking others to write all their code for them; and so I have finally made a long promised rule change, effective today:

Effective Today: New Rule #3 of Forum Rules / Community Guidelines

Quote:
(3) Do not ask others to write all your code for you. Show your own work and the code you have tried to write on your own, including sample input, desired output and any error messages from the code you have attempted.
This User Gave Thanks to Neo For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Transpose multiple rows (with a mix of space and enter) to a single column

How to change the uploaded weekly file data to the following format? New Well_Id,Old Well_Id,District,Thana,Date,Data,R.L,WellType,Lati.,Longi. BAG001,PT006,BARGUNA,AMTALI,1/2/1978,1.81,2.29,Piezometer,220825,901430 BAG001,PT006,BARGUNA,AMTALI,1/9/1978,1.87,2.29,Piezometer,220825,901430... (3 Replies)
Discussion started by: sara.nowreen
3 Replies

2. UNIX for Dummies Questions & Answers

Split single record to multiple records

Hi Friends, source .... col1,col2,col3 a,b,1;2;3 here colom delimeter is comma(,). here we dont know what is the max length of col3 means now we have 1;2;3 next time i will receive 1;2;3;4;5;etc... required output .............. col1,col2,col3 a,b,1 a,b,2 a,b,3 please give me... (5 Replies)
Discussion started by: bab.galary
5 Replies

3. Shell Programming and Scripting

Need help splitting huge single record file

I was given a data file that I need to split into multiple lines/records based on a key word. The problem is that it is 2.5GB or bigger and everything I try in perl or sed causes a Segmentation fault. Can someone give me some other ideas. The data is of the form:... (5 Replies)
Discussion started by: leolson
5 Replies

4. Shell Programming and Scripting

awk - single quotes as record separator

How do I use single quotes as record separator in awk? I just couldn't figure that out. I know how to use single quotes as field separator, and double quotes as both field and record separator ... (1 Reply)
Discussion started by: locoroco
1 Replies

5. Shell Programming and Scripting

How to insert a single quote to each record

I have a file as: 1 New used 1 used New I need o/p as: '1' 'New' 'used' '1' 'used' 'New' (12 Replies)
Discussion started by: karumudi7
12 Replies

6. Shell Programming and Scripting

Multiple lines in a single column to be merged as a single line for a record

Hi, I have a requirement with, No~Dt~Notes 1~2011/08/1~"aaa bbb ccc ddd eee fff ggg hhh" Single column alone got splitted into multiple lines. I require the output as No~Dt~Notes 1~2011/08/1~"aaa<>bbb<>ccc<>ddd<>eee<>fff<>ggg<>hhh" mean to say those new lines to be... (1 Reply)
Discussion started by: Bhuvaneswari
1 Replies

7. Shell Programming and Scripting

Split a single record to multiple records & add folder name to each line

Hi Gurus, I need to cut single record in the file(asdf) to multile records based on the number of bytes..(44 characters). So every record will have 44 characters. All the records should be in the same file..to each of these lines I need to add the folder(<date>) name. I have a dir. in which... (20 Replies)
Discussion started by: ram2581
20 Replies

8. Shell Programming and Scripting

Transpose multi-line records into a single row

Now that I've parsed out the data that I desire I'm left with variable length multi-line records that are field seperated by new lines (\n) and record seperated by a single empty line ("") At first I was considering doing something like this to append all of the record rows into a single row: ... (4 Replies)
Discussion started by: daveyabe
4 Replies

9. UNIX for Dummies Questions & Answers

Delete a single record from a file

Hello all, Is there a function for deleting a single record from a file? Thanks in advance... (4 Replies)
Discussion started by: klafte
4 Replies

10. Shell Programming and Scripting

transforming a multiline record to single line

Hi All I have a file like this <LText>gvsvdkag<LREC>bdjvdj</LREC>nididyvv</LText> <LText>gvsvdkag<LREC>bdj vdj</LREC>nididyvv</LText> <LText>gvsvdkag<LREC>b djvdj</LREC>nididyvv</LText> <LText>gvsvdkag<LREC>bdjvdj</LREC>nididyvv</LText> How will i change the file to ... (9 Replies)
Discussion started by: anju
9 Replies
Login or Register to Ask a Question