Sponsored Content
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? Post 303028902 by bakunin on Thursday 17th of January 2019 06:27:16 PM
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:
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
DelimMatch(3)						User Contributed Perl Documentation					     DelimMatch(3)

NAME
Text::DelimMatch - Perl extension to find regexp delimited strings with proper nesting SYNOPSIS
use Text::DelimMatch; $mc = new Text::DelimMatch, $startdelim, $enddelim; $mc->quote('"'); $mc->escape("\"); $mc->double_escape('"'); $mc->case_sensitive(1); ($prefix, $match, $remainder) = $mc->match($string); ($prefix, $nextmatch, $remainder) = $mc->match(); $middle = $mc->strip_delim($match); # returns $match w/o start and end delim DESCRIPTION
These routines allow you to match delimited substrings in a buffer. The delimiters can be specified with any regular expression and the start and end delimiters need not be the same. If the delimited text is properly nested, entire nested groups are returned. In addition, you may specify quoting and escaping characters that contribute to the recognition of start and end delimiters. For example, if you specify the start and end delimiters as '(' and ')', respectively, and the double quote character as a quoting character, and the backslash as an escaping character, then the delimited substring in this buffer is "(ma(t)c)h)": 'prefix text "(quoted text)" (escaped " text) (ma(t)c)h) postfix text' In order to support this rather complex interface, the matching context is encapsulated in an object. The object, Text::DelimMatch, has the following public methods: new $start, $end, $escape, $dblesc, $qs1, $qe1, ... $qsn, $qen Creates a new object. All of the arguments are optional, and can be set with other methods, but they must be passed in the specified order: start delimiter, end delimiter, escape characters, double escape characters, and a set of quote characters. match $string In an array context, returns ($pre, $match, $post) where $pre is the text preceding the first match, $match is the matched text (including the delimiters), and $post is the rest of the text in the buffer. In a scalar context, returns $match. If $string is not provided on subsequent calls, the $post from the previous match is used, unless keep is false. If keep is false, the match always fails. strip_delim $string Returns $string with the start and end delimiters removed. delim $start, $end Set the start and end delimiters. Only one set of delimiters can be in use at any one time. Returns the delimters in use before this call. quote $startq, $endq Specifies the start and end quote characters. Multiple quote character pairs are supported, so this function is additive. To clear the current settings, pass no arguments, e.g., $mc->quote(). If only $start is passed, $end is assumed to be the same. In matching, quotes occur in pairs. In other words, if (",") and (',') are both specified as quote pairs and a string beginning with " is found, it is ended only by another ", not by '. Returns the quote hash in use before this call. escape $esc Specifies a set of escaping characters. This can only be a string of characters. $esc can be a regexp set or a simple string. If it is a simple string, it will be translated into the regexp set "[ quotemeta($esc) ]". Returns the escape characters in use before this call. double_escape $esc Specifies a set of double-escaping characters, i.e., characters that are considered escaped if they occur in pairs. For example, in some languages, 'Don''t you see?' defines a string containing a single apostrophe. $esc can only be a string of characters. $esc can be a regexp set or a simple string. If it is a simple string, it will be translated into the regexp set "[ quotemeta($esc) ]". Returns the double-escaping characters in use before this call. case_sensitive $bool Sets case sensitivity to $bool or true if $bool is not specified. Returns the case sensitivity in use before this call. keep $bool Sets keep to $bool or true if $bool is not specified. Keep, which is true by default, specifies whether or not the matching context object keeps a local copy of the buffer used in matching. Keeping a local copy allows repeated matching on the same buffer, but might be a bad idea if the buffer is a terabyte long. ;-) Returns the keep setting in use before this call. returndelim $bool Sets returndelim to $bool or true if $bool is not specified. Returndelim, which is true by default, specifies whether or not the start and end delimiters are returned with the matching string. Returns the returndelim setting in use before this call. error $seterr Returns the last error that occured. If $seterr is passed, the error is set to that value. Some common kinds of bad input are detected and an error condition is raised. If an error condition is raised, all matching fails until the error is cleared. The most common error is a bad regular expression, for example specifing the start delimiter as "(" instead of "\(". Remember, these are regexps! pre_matched Returns the prefix text from the last match if keep is true. Sets an error and returns an empty string if keep is false. matched Returns the matched text from the last match if keep is true. Sets an error and returns an empty string if keep is false. post_matched Returns the postfix text from the last match if keep is true. Sets an error and returns an empty string if keep is false. debug $bool Sets debug to $bool or true if $bool is not specified. If debug is true, informative and progress messages are printed to STDOUT by some methods. Returns the debugging setting in use before this call. dump For debugging, prints all of the instance variables for a particular object. slow $bool For debugging. Some classes of delimited strings can be located with much faster algorithms than can be used in the most general case. If slow is true, the slower, general algorithm is always used. For simplicity, and backward compatibility with the previous (limited release) incarnation of this module, the following functions are also available directly: nested_match ($string, $start, $end, $three) If $three is true, returns ($pre, $match, $post) in an array context otherwise returns ("$pre$match", $post). In a scalar context, returns "$pre$match". skip_nested_match ($string, $start, $end, $three) If $three is true, returns ($pre, $match, $post) in an array context otherwise returns ("$pre$match", $post). In a scalar context, returns $post. EXAMPLES
$mc = new Text::DelimMatch '"'; $mc->('pre "match" post') == '"match"'; $mc->delim("\(", "\)"); $mc->('pre (match) post') == ('pre ', '(match)', ' post'); $mc->('pre (ma(t)ch) post') == ('pre ', '(ma(t)ch)', ' post'); $mc->quote('"'); $mc->escape("\"); $mc->('pre (ma")"tch) post') == ('pre ', '(ma")"tch)', ' post'); $mc->('pre (ma(t)c)h") post') == ('pre ', '(ma(t)c)h")', ' post'); See also test.pl in the distribution. AUTHOR
Norman Walsh, ndw@nwalsh.com COPYRIGHT
Copyright (C) 1997-2002 Norman Walsh. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. WARRANTY
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. SEE ALSO
perl(1). perl v5.12.1 2003-05-20 DelimMatch(3)
All times are GMT -4. The time now is 12:17 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy