Removing just the trailing commas :-(


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Removing just the trailing commas :-(
# 1  
Old 03-06-2013
Wrench Removing just the trailing commas :-(

Hi all,
I haven't needed to do any shell based editing for nearly 20 years, and no amount of searching around has found me a solution to this very simple problem :-(

I have a csv file.
Some lines have three commas at the end. This means the invoice hasn't been paid.
I'd like to use sed / grep etc to create a new file with just the lines which have the three trailing commas, deleting (just) the trailing commas in the process.

What I've done is this:

Code:
#Firsty, get all invoices which have been paid, and save them to this folder 
grep -v ,,, Invoices.csv > Invoices_Paid.csv

#Then, get the ones which haven't been paid (identified by three commas at the end of the line) and save them to this folder
grep ,,, Invoices.csv > Invoices_Unpaid.csv



The bit that's missing is the removal of just the trailing commas from the Unpaid Invoices line. Can anyone help?

many thanks

(Very rusty) James

Moderator's Comments:
Mod Comment Try using code tags instead of icode tags

Last edited by Scrutinizer; 03-06-2013 at 12:59 PM.. Reason: icode -> code tags
# 2  
Old 03-06-2013
Here is an awk program to identify lines that has 3 trailing commas, delete them and print:
Code:
awk '/,,,$/{sub(/,,,$/,x); print}' filename

# 3  
Old 03-06-2013
With sed:
Code:
sed -n 's/,,,$//p' file

# 4  
Old 03-06-2013
Quote:
Originally Posted by chardyzulu
Code:
#Then, get the ones which haven't been paid (identified by three commas at the end of the line) and save them to this folder
grep ,,, Invoices.csv > Invoices_Unpaid.csv

Be aware that your pattern will match even if the three commas are not at the end of the line. If that's a possibility, you need to anchor your match to the end of the line using ,,,$. Even if it's not a possibility at this time, the explicit anchor serves as documentation and future-proofing.

In my opinion, sed is probably the best fit for the job:
Code:
sed -n 's/,,,$//p'

Regards,
Alister
# 5  
Old 03-06-2013
many thanks :-)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Removing commas from CSV file

Hi I'm creating a sh script to generate a csv file. The CSV contains the values from a sql table. The content looks this: a,b,c,c2,c3,,,,,,,,,,,d,e I have some code that can separate the fields using the comma as delimiter, but some values actually contain commas, such as... (2 Replies)
Discussion started by: preema
2 Replies

2. Shell Programming and Scripting

Removing Trailing Line

I have been trying to remove empty lines and lines just filled with spaces. I have used the following command which does work. sed -i "/^\s*$/d" Except it leaves one single trailing line at the very end of the file. For the life of me I cant figure out why I cant remove that last trailing... (2 Replies)
Discussion started by: user8282892
2 Replies

3. UNIX for Dummies Questions & Answers

Removing trailing x'0A' characters.

I am trying to remove trailing carriage return (x'0a') from a source program. What is a good way to do this for the whole file? TIA (4 Replies)
Discussion started by: wbport
4 Replies

4. UNIX for Dummies Questions & Answers

Removing trailing characters

I have been given a shell script that I need to amend. To do the following extract the filename from the flag file by removing the .flag extension. # Local variables # Find if the flag files exists MASK=coda_mil2*.flag # Are there any files? bookmark="40" fileFound=0 ls -1... (3 Replies)
Discussion started by: andymay
3 Replies

5. Shell Programming and Scripting

Help with removing additional commas in string

Hi Experts, I have below strings hello,hi,,,,,,start date age,code,,,,,61,season I am trying to format this string to hello,hi,start date age,code,61,season Can anyone please help me in achieving this? Kind Regards, RB (3 Replies)
Discussion started by: ramakanth_burra
3 Replies

6. Shell Programming and Scripting

Removing trailing zeros using sed

Hello All, I have a csv file with 3 columns. The file which looks like this 47850000,100,233 23560000,10000,456 78650000,560000,54 34000000,3456,3 The first column has 4 trailing zeros. I have to remove 4 trailing zeroes from 1st field. The output file should appear as follows. ... (12 Replies)
Discussion started by: grajp002
12 Replies

7. Shell Programming and Scripting

Removing trailing zeroes

So, I can't figure out how to do a previous question with printf, so I'm taking a different approach. Suppose I have a set of numbers: 1200,135.000000,12.30100,3212.3200,1.759403,,1230,101.101010,100.000000 I want to remove all trailing zeroes after the decimal, and, if it ends up orphaned,... (8 Replies)
Discussion started by: treesloth
8 Replies

8. Shell Programming and Scripting

Need help in removing commas

i have the below line as output from a script. I want to delete the string "," and get the output without comma, cat D* | grep "bytes free" | awk '{print $3}' | ????? output: 40,966,189,056 Desired O/P: 40966189056 (1 Reply)
Discussion started by: ali560045
1 Replies

9. Shell Programming and Scripting

re: removing trailing space from lines

Not sure why this thread was closed without any explanation, but you can do what you're asking with sed 's/]*$//g' < sourceFile > destFile (1 Reply)
Discussion started by: oombera
1 Replies

10. UNIX for Dummies Questions & Answers

removing commas from text file

Dear all I have a file which looks like this xxxxxxxxxxxxxx,xxx,xxxxxxxxxx xxxxxxxxxxxxxx,xxx,xxxxxxxxxx etc basically 14 characters then a comma, three characters, then a comma then 10 characters. We are uploading this file to our mainframe and they want the commas removed, so it... (6 Replies)
Discussion started by: hcclnoodles
6 Replies
Login or Register to Ask a Question