Need help on an old post - How to convert a comma delimited string to records or lines of text?


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Need help on an old post - How to convert a comma delimited string to records or lines of text?
# 1  
Old 01-15-2019
Need help on an old post - How to convert a comma delimited string to records or lines of text?

Hi,

Apologies in advance to the moderator if I am posting this the wrong way.

I've searched and found the solution to an old post but as it is a very old post, I don't see an option to update it with additional question.

The question I have is in relation to the following post:

How to convert a comma delimited string to records or lines of text?

I just want to know if there is a way to number the output. At the moment, I am piping the output to nl to generate a numbered list. I just want to know how I can change the following so it can be a numbered output without using nl.

Not sure if I should PM RudiC or RavinderSingh13, sorry.

Code:
tr ',' '\n' < file3
user1
user2
user3
user4

awk -F"," '{for(i=1;i<=NF;i++){print $i}}' Input_file
OR
awk '{gsub(/\,/,"\n",$0);print $0}' Input_file


Last edited by rbatte1; 01-15-2019 at 07:29 AM..
# 2  
Old 01-15-2019
Quote:
Originally Posted by newbie_01
Hi,

Apologies in advance to the moderator if I am posting this the wrong way.

I've searched and found the solution to an old post but as it is a very old post, I don't see an option to update it with additional question.

The question I have is in relation to the following post:

How to convert a comma delimited string to records or lines of text?

I just want to know if there is a way to number the output. At the moment, I am piping the output to nl to generate a numbered list. I just want to know how I can change the following so it can be a numbered output without using nl.

Not sure if I should PM RudiC or RavinderSingh13, sorry.

Code:
tr ',' '\n' < file3
user1
user2
user3
user4

awk -F"," '{for(i=1;i<=NF;i++){print $i}}' Input_file
OR
awk '{gsub(/\,/,"\n",$0);print $0}' Input_file

No, I think you did the right thing. You searched the forum for your problem, and now you are asking for a refinement, after finding your own solution, which you consider sub-optimal. I have to admit I would be happy with piping the output into nl.

Try this variation on your second solution:
Code:
$ printf "a,b,c,d\ne,f,g,h\n" | awk -F"," 'BEGIN{x=1;}{for(i=1;i<=NF;i++){print x++,$i}}'
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h

Andrew

Last edited by rbatte1; 01-15-2019 at 07:47 AM.. Reason: Just changing the quoted text to match the edit I made to post 1
These 2 Users Gave Thanks to apmcd47 For This Post:
# 3  
Old 01-15-2019
Thanks Andrew.
Yeah, the nl works fine . Just curious if there is an option to not use it.
Had tried your suggestion and that works fine.
Found it by chance from Googling that I can actually do RavinderSingh13's to just do
Code:
awk -F"," '{for(i=1;i<=NF;i++){print i " " $i}}' Input_file

Always room for learning. Now, I am curious how to do that in the gsub :-)
This User Gave Thanks to newbie_01 For This Post:
# 4  
Old 01-15-2019
Quote:
Originally Posted by newbie_01
Hi,
Apologies in advance to the moderator if I am posting this the wrong way.
I've searched and found the solution to an old post but as it is a very old post, I don't see an option to update it with additional question.
The question I have is in relation to the following post:
How to convert a comma delimited string to records or lines of text?
I just want to know if there is a way to number the output. At the moment, I am piping the output to nl to generate a numbered list. I just want to know how I can change the following so it can be a numbered output without using nl.
Not sure if I should PM RudiC or RavinderSingh13, sorry.
Code:
tr ',' '\n' < file3
user1
user2
user3
user4

awk -F"," '{for(i=1;i<=NF;i++){print $i}}' Input_file
OR
awk '{gsub(/\,/,"\n",$0);print $0}' Input_file

Hello newbie_01,

As per forum rules we should NOT ask questions in PMs. Good that you found answer by searching it, for future it is always good to mention 3 things. 1- Sample of your Input_file, 2- sample of your expected Output and 3rd- Most important one, what have you have tried in order to solve the problem.

Once you provide all details you will get all kind of guidance needed on here, keep learning and keep sharing on this great site,cheers.

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 5  
Old 01-15-2019
How about
Code:
awk '{print NR, $0}' RS="," file
1 user1
2 user2
3 user3
4 user4


If your input has several lines, try RS="[,\n]" - if your awk version allows for regex record separators.
This User Gave Thanks to RudiC For This Post:
# 6  
Old 01-16-2019
use 'cat -n' on the tailing pipe if you want to avoid funky awk ...
Code:
[book@room ~]$ echo 'a,b,c,d' | tr ',' '\n' | cat -n
     1  a
     2  b
     3  c
     4  d
[book@room ~]$

# 7  
Old 01-17-2019
Quote:
Originally Posted by Just Ice
use 'cat -n'
Standard (POSIX) cat doesn't have any -n switch. This is because it is for conCATenating files. It is neither a display vehicle, nor a make-a-datastream-out-of-my-file-utility, fullscreen editor or anything else than a file concatenating tool.

Rob Pike and Brian Kernighan wrote a paper together ("cat -v considered harmful", Usenix conference 1983 if memory serves correctly) which later was the basis for the book "Programming in the UNIX environment" by the same authors. It should be a set book for every beginner in the UNIX world.

Here is a standard-conforming way of numbering lines, using sed. Interestingly enough i noticed that all three invocations of sed are necessary, it won't work with two:

Code:
echo 'a,b,c,d' | sed ':start;/,/ {h;s/,.*//p;g;s/^[^,]*,//;b start;}' | sed = | sed 'N;s/\n/   /'

I hope this helps.

bakunin
These 2 Users Gave Thanks to bakunin 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

Linux convert Comma delimited file to pipe

I have file in linux with comma delimited and string fields in double quotations ", I need to convert them to pipe delimiter please share your inputs. Example: Input: "2017-09-30","ACBD,TVF","01234",NULL,18,NULL,"686091802","BANK OF ABCD, LIMITED, THE",790456 Output: ... (4 Replies)
Discussion started by: shieksir
4 Replies

2. Shell Programming and Scripting

Help/Advise please for converting space delimited string variable to comma delimited with quote

Hi, I am wanting to create a script that will construct a SQL statement based on a a space delimited string that it read from a config file. Example of the SQL will be For example, it will read a string like "AAA BBB CCC" and assign to a variable named IN_STRING. I then concatenate... (2 Replies)
Discussion started by: newbie_01
2 Replies

3. UNIX for Dummies Questions & Answers

How to convert a comma delimited string to records or lines of text?

Hi, I am not sure if I've posted this question before. Anyway, I previously asked about converting lines of text into a comma delimited string. Now I am needing to do the other way around ... :( :o Can anyone advise how is this possible? Example as below: Converting records/lines to... (2 Replies)
Discussion started by: newbie_01
2 Replies

4. UNIX for Dummies Questions & Answers

How to change a line of text to a comma delimited string?

Hi, Is there a one-liner that I can use to change a line of text into a comma delimited string? For example, convert user1 user2 user3 user4to user1,user2,user3,user4Currently using while read x, although got the extra comma at the end that I have to remove manually. Please... (5 Replies)
Discussion started by: newbie_01
5 Replies

5. Shell Programming and Scripting

Need a script to convert comma delimited files to semi colon delimited

Hi All, I need a unix script to convert .csv files to .skv files (changing a comma delimited file to a semi colon delimited file). I am a unix newbie and so don't know where to start. The script will be scheduled using cron and needs to convert each .csv file in a particular folder to a .skv... (4 Replies)
Discussion started by: CarpKing
4 Replies

6. Shell Programming and Scripting

how to convert comma delimited file to tab separator

Hi all, How can i convert comma delimited .csv file to tab separate using sed command or script. Thanks, Krupa (4 Replies)
Discussion started by: krupasindhu18
4 Replies

7. Shell Programming and Scripting

Print records which do not have expected number of fields in a comma delimited file

Hi, I have a comma (,) delimited file, in which few fields are enclosed with in double quotes " ". I have to print the records in the file which donot have expected number of field with the line number. File1 ==== name,desgnation,doj,project #header#... (7 Replies)
Discussion started by: machomaddy
7 Replies

8. Shell Programming and Scripting

how to Insert values in multiple lines(records) within a pipe delimited text file in specific cols

this is Korn shell unix. The scenario is I have a pipe delimited text file which needs to be customized. say for example,I have a pipe delimited text file with 15 columns(| delimited) and 200 rows. currently the 11th and 12th column has null values for all the records(there are other null columns... (4 Replies)
Discussion started by: vasan2815
4 Replies

9. UNIX for Advanced & Expert Users

Urgent! need help! how to convert this file into comma delimited format

Hi experts, I need urget help! I have the a text file with this format: Types of fruits Name of fruits 1,1 Farm_no,1 apple,1 pineapple,1 grapes,1 orange,1 banana,1 2,2--->this is the record seperator Farm_no,2 apple,1 pineapple,1 grapes,3 orange,2 banana,1 3,3--->this is the... (2 Replies)
Discussion started by: natalie23
2 Replies

10. Shell Programming and Scripting

how to convert this file into comma delimited format

Hi experts, I need urget help! I have the a text file with this format: Types of fruits Name of fruits 1,1 Farm_no,1 apple,1 pineapple,1 grapes,1 orange,1 banana,1 2,2--->this is the record seperator Farm_no,2 apple,1 pineapple,1 grapes,3 orange,2 banana,1 3,3--->this is the... (1 Reply)
Discussion started by: natalie23
1 Replies
Login or Register to Ask a Question