Replace last 9 delimeters “,” with “|” in UNIX


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace last 9 delimeters “,” with “|” in UNIX
# 1  
Old 02-26-2018
Display Replace last 9 delimeters “,” with “|” in UNIX

Hi Guys,

I want to replace last 9 "," delimeters with "|" in a file

Example :-

Code:
"ashu,pant",3,5,5,7,7,87,8,8,8

Code:
"ashu,pant"|3|5|5|7|7|87|8|8|8

Help would be really appreciated.

Thanks guys,

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

Last edited by RudiC; 02-26-2018 at 08:58 AM.. Reason: Added CODE tags.
# 2  
Old 02-26-2018
Welcome to the forum.

How far would
Code:
sed 's/,/\o001/; s/,/|/g; s/\o001/,/' file
"ashu,pant"|3|5|5|7|7|87|8|8|8

get you?
This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-26-2018
Thanks @RudiC for your quick response
I have 2 sets of records, one is without double quote and other is with double quote

Example:-
Code:
abcd,3,5,5,7,7,1,2,3,4
"ashu,pant,something",3,5,5,7,7,8,7,8,8,8

Result :-
Code:
abcd|3|5|5|7|7|1|2|3|4
"ashu,pant,something"|3|5|5|7|7|8|7|8|8|8

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

Last edited by RudiC; 02-26-2018 at 11:10 AM.. Reason: Added CODE tags, removed duplicate part.
# 4  
Old 02-26-2018
Try
Code:
sed 'h; s/^.*"//; s/,/|/g; x; s/[^"]*$//g; G; s/\n//; ' file
"ashu,pant"|3|5|5|7|7|87|8|8|8
abcd|3|5|5|7|7|1|2|3|4
"ashu,pant,something"|3|5|5|7|7|8|7|8|8|8

# 5  
Old 02-26-2018
Quote:
Originally Posted by himanshupant
Thanks @RudiC for your quick response
I have 2 sets of records, one is without double quote and other is with double quote

Example:-
Code:
abcd,3,5,5,7,7,1,2,3,4
"ashu,pant,something",3,5,5,7,7,8,7,8,8,8

Result :-
Code:
abcd|3|5|5|7|7|1|2|3|4
"ashu,pant,something"|3|5|5|7|7|8|7|8|8|8

The request is for the last 9 delimiters but the posted input and output show that the last line contains 10. That renders the counting of separators unreliable and another requirement must be established, like the double quotes or perhaps when the line reaches a single digit.
# 6  
Old 02-26-2018
Alternatively, try:
Code:
awk '{for(i=1; i<=NF; i+=2) gsub(",","|",$i)}1' FS=\" OFS=\" file

Which replaces al commas by vertical bars that are not within double quotes.

Last edited by Scrutinizer; 02-26-2018 at 01:33 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 02-26-2018
Using the first coma-digit to delineate the start of section with pipes.
Save as himanshupant.py
Run as python3 himanshupant.py
Code:
import re

# substitute the txt file with input filename
with open('himanshupant.txt') as rf:
    for line in rf:
        pivot = re.search(',\d', line).start()
        head = line[:pivot]
        tail = re.sub(',', '|', line[pivot:])
        print("{}{}".format(head, tail))

Output:
Code:
abcd|3|5|5|7|7|1|2|3|4
"ashu,pant,something"|3|5|5|7|7|8|7|8|8|8

This User Gave Thanks to Aia 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

Lines between specific delimeters

Hi, I have a requirement like this Line 1 Line 2 Line 3 Manager Line 4 Line 5 I have to print like this Have you done your work on time because I have to forward the work forward. Any Help is really Appriciated.... (1 Reply)
Discussion started by: abhishek7687
1 Replies

2. Shell Programming and Scripting

multiple delimeters in awk

Hi all, The have 92 columns with combination of "" and , two delimiters‎ and i need to takes some 32 columns only in that. i used awk command to extract .but its not working good. Example: "aaaa","10,00.00",work,5555,............. Command i tried : awk -F"" -v OFS=","... (7 Replies)
Discussion started by: baskivs
7 Replies

3. Shell Programming and Scripting

Commas within Delimeters

Hi experts, I would like a favour from you guys to get the info from 5th column which was separated by the delimeter comma ( , ) The Data file is as below:- 1,USER1,"90, TEST AVENUE, OLD ROAD",test1,124,N 2,USER2,88 TEST STREET NEW ROAD,test2,123,N The User File is as below:- USER1... (1 Reply)
Discussion started by: shenkz
1 Replies

4. Shell Programming and Scripting

How to get a string between two delimeters using sed.

I want to get IP address only from the input using sed. i.e string between between "(" and ")" delimeters. echo "serverA (11.22.333.444) is alive" | sed 's/<??>/<??>/' I know how to do this using cut and awk's split features. I also want to know how to do this using awk's... (3 Replies)
Discussion started by: kchinnam
3 Replies

5. UNIX for Advanced & Expert Users

Delimeters Count in a FlatFile

Hi, I have the below script to check the count of delimeters for a file (here is File : test.csv Delimeter is ",") awk '{gsub(/"*"/,x);print gsub(/,/,x)}' test.csv And it return the output for each line as: 2 2 cat test.csv: abc,xyz "abc,zxyz",1 I need help one the below things: - IS... (8 Replies)
Discussion started by: venkatajay_18
8 Replies

6. Shell Programming and Scripting

Reading a FLAT File - No Delimeters

Hi Folks, I have a file without any delimeters and it is a flat file. Example, my raw data looks: x25abcy26defz27ghi..... Now, could you please any one help me to program to split this into variable and create a text file. I want a output as below Name Age Number x 25 abc... (14 Replies)
Discussion started by: Jerald Nathan
14 Replies

7. Shell Programming and Scripting

awk with column delimeters

Hi All, I want to execute this cat /etc/passwd | awk -F: '{print $1,$7}' with a fixed column on the first and second. Say on the first I want 12 column and second with 20 column. Example root /usr/bin/ksh lp /bin/false Thanks for any comment you may add. (5 Replies)
Discussion started by: itik
5 Replies

8. Shell Programming and Scripting

awk with two delimeters

Hi, can anyone explain me below codes...i used the below one to use two delimeter(://) at a time.. but i am not able to understand the output options.. note: here there is no requirement ..only to understand myself about below command... command: awk -F "" '{print $1}' inputfile ... (2 Replies)
Discussion started by: Shahul
2 Replies

9. Shell Programming and Scripting

Parsing a file that contains 2 types of delimeters

Now that I have a file that looks something like this; 20050926 Unknown 20050926 MUREXFO 20050926 MUREXFO 20050926 MUREXFO 20050926 Unknown 20050926 KADDUSS 20050926 KADDUSS 20050926 KADDUSS 20050926 MUREXFO Is there a way in vi that I can search the file and remove any line... (2 Replies)
Discussion started by: morgadoa
2 Replies

10. Shell Programming and Scripting

Parsing a file that contains 2 types of delimeters

I am trying to write a script and failing miserably. I have a file that looks something like this; 20050924-155819;Backoffice;1037;0;DDT-TCP/IP;;0;Node 20050924-155902;Unknown;1036;0;DDT-TCP/IP;;0;Node 20050924-155922;FrontOffice;1040;5;DDT- The desired result is one file containing only... (4 Replies)
Discussion started by: morgadoa
4 Replies
Login or Register to Ask a Question