Re align in one row using sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Re align in one row using sed
# 1  
Old 08-18-2016
Re align in one row using sed

Hi,

Anyone can help on how to re align my data in one row using sed.

test.csv
Code:
"url1","abc","project url1"
2016-08-16
"url2,"microsoft","project url2"
2016-08-18

need output like this
Code:
"url1","abc","project url1","2016-08-16"
"url2,"microsoft","project url2","2016-08-18"

Thanks in advance

Regards,
FSPalero


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 08-18-2016 at 02:51 AM.. Reason: Added CODE tags.
# 2  
Old 08-18-2016
Quote:
Originally Posted by fspalero
Hi,

Anyone can help on how to re align my data in one row using sed.

test.csv
"url1","abc","project url1"
2016-08-16
"url2,"microsoft","project url2"
2016-08-18

need output like this
"url1","abc","project url1","2016-08-16"
"url2,"microsoft","project url2","2016-08-18"

Thanks in advance

Regards,
FSPalero

In awk

Code:
[akshay@localhost tmp]$ cat f
"url1","abc","project url1"
2016-08-16
"url2,"microsoft","project url2"
2016-08-18

Code:
[akshay@localhost tmp]$ awk '{printf("%s%s%s",NF==1?OFS:"",$0,NF==1?RS:"")}' OFS=, f
"url1","abc","project url1",2016-08-16
"url2,"microsoft","project url2",2016-08-18

---------- Post updated at 09:58 AM ---------- Previous update was at 09:56 AM ----------

If you need quote then
Code:
[akshay@localhost tmp]$ awk 'NF==1{$0=q $0 q}{printf("%s%s%s",NF==1?OFS:"",$0,NF==1?RS:"")}' q='"' OFS=, f
"url1","abc","project url1","2016-08-16"
"url2,"microsoft","project url2","2016-08-18"

# 3  
Old 08-18-2016
Hi Akshay Hegde,

Thank you very much for the help, it work!

Regards,
Feride
# 4  
Old 08-18-2016
Not sure this will work, and I can't test right now:
Code:
sed 's/$/,"/; N; s/$/"/' test.csv

# 5  
Old 08-18-2016
And another one:
Code:
$ sed '/^"/ {N; s/\n/,/}' test.csv
"url1","abc","project url1",2016-08-16
"url2,"microsoft","project url2",2016-08-18

# 6  
Old 08-18-2016
Hi.

Assuming you can use standard commands and do not need quotes on date:
Code:
paste -d, - - < test.csv

producing
Code:
"url1","abc","project url1",2016-08-16
"url2,"microsoft","project url2",2016-08-18

Best wishes ... cheers, drl
This User Gave Thanks to drl For This Post:
# 7  
Old 08-18-2016
Quote:
Originally Posted by Akshay Hegde
In awk

Code:
[akshay@localhost tmp]$ cat f
"url1","abc","project url1"
2016-08-16
"url2,"microsoft","project url2"
2016-08-18

Code:
[akshay@localhost tmp]$ awk '{printf("%s%s%s",NF==1?OFS:"",$0,NF==1?RS:"")}' OFS=, f
"url1","abc","project url1",2016-08-16
"url2,"microsoft","project url2",2016-08-18

---------- Post updated at 09:58 AM ---------- Previous update was at 09:56 AM ----------

If you need quote then
Code:
[akshay@localhost tmp]$ awk 'NF==1{$0=q $0 q}{printf("%s%s%s",NF==1?OFS:"",$0,NF==1?RS:"")}' q='"' OFS=, f
"url1","abc","project url1","2016-08-16"
"url2,"microsoft","project url2","2016-08-18"

A bit simplified, extra quotes in red:
Code:
awk '{printf "%s",(NF==1)?(",\"" $0 "\"" RS):$0}' test.csv

A Unix/GNU sed solution:
Code:
sed '$!N; s/\n\([^,]*\)$/,"\1"/' test.csv

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed not see last row

Hi Everyone! I have a problem my script. I'm useing sed to find the separate character in my text sed 's/"*"//g' ./myfile.txt My problem: When the last row is doesn't has enter in the end of line, the sed is not work. So if i have a 30 rows text i will see 29 rows separators. Please help... (9 Replies)
Discussion started by: snayper
9 Replies

2. Shell Programming and Scripting

Insert row without deleting previous data using sed

Hello, I want to add a new row to a file to insert data without deleting the previous data there. Example: file a b c d Output a b newtext c (6 Replies)
Discussion started by: joseamck
6 Replies

3. Shell Programming and Scripting

awk/sed to get unique row

Hello ALL, I have very huge file almost 25G size contents of the file are "|" delimited columns on each row eg: 1396745|1078529|KDS|2011-04-21 00:00:00.0|1100|30|2|2011-04-20 22:35:24.0|2011-04-20 22:35:24.0|0|2011-04-21 00:00:00.0|1100|2222434|2011-04-21 11:00:00.0|0|0|2011-06-29... (10 Replies)
Discussion started by: posner
10 Replies

4. Shell Programming and Scripting

Replace last row of a column in bash/awk/sed

Hi, I've got a file with 3 columns which ends like this: ... 1234 345 1400 5287 733 1400 8472 874 1400 9317 726 1400 I want to replace the last row of the last column with the value 0. So my new file will end: ... 1234 345 1400 5287 733 1400 8472 874 1400 9317 726 ... (5 Replies)
Discussion started by: jhunter87
5 Replies

5. Shell Programming and Scripting

SED: delete matching row and 4 next rows?

Hi, Tried to look for solution, and found something similar but could not adapt the solution for my needs.. I'm trying to match a pattern (in this case "ProcessType")in a logfile, then delete that line and the 4 following lines. The logfile looks as follows: ProcessType: PROCESS_A... (5 Replies)
Discussion started by: Juha
5 Replies

6. Shell Programming and Scripting

help with sed to add delimiter and new field to each row

I have a file with millions of rows that I need to add a delimiter and a new field with a zero to the end of each row. (its too big to open and do a find and replace regex) I'm looking for the next line '\n' and need to replace it with a Unit Separator (hex \037) 0 \n. I've tried the... (2 Replies)
Discussion started by: kmac
2 Replies

7. Shell Programming and Scripting

Add row, awk, sed ?

I wrote script in bash which generates this report: phrase1;phrase2;phrase3;phrase4;phrase5;phrase6;phrase7;phrase8 phrase9;phrase2;phrase10;phrase4;phrase11;phrase12;phrase13;phrase14 phrase15;phrase16;phrase17;phrase18;phrase19;phrase20;phrase21;phrase22 ... I would like add name only... (3 Replies)
Discussion started by: patrykxes
3 Replies

8. Shell Programming and Scripting

sed command to delete row

I want to use sed command to delete a matched row with a pattern. And I also want to delete previous and next row of that row. Which option can I use with sed ? (9 Replies)
Discussion started by: anhtt
9 Replies

9. Shell Programming and Scripting

How to assign value to a variable with row(using -n) returned by sed

Hi Friends, REQUIREMENT: Want to delete files from the current directory match with the same in the file test.txt set -x i=1 echo "i=$i" COUNT=`sed -n '$=' test.txt` echo "Count=$COUNT" while do "## Here is error##" FILETOREMOVE=`sed -n \'$i,1p\' test.txt` echo $FILETOREMOVE... (5 Replies)
Discussion started by: sourabhsharma
5 Replies

10. Shell Programming and Scripting

How to update a single row in a file with sed

Hi. I want to be able to update only one line in a file that matches a key using sed, but I can't seem to get this (the key is right at the beginning of each row) Here is what I have tried so far, but every row is being updated. I want the end result to be that the input file only has the single... (6 Replies)
Discussion started by: brendanf
6 Replies
Login or Register to Ask a Question