Remove leading zeros separated by pipe


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove leading zeros separated by pipe
# 1  
Old 03-10-2017
Remove leading zeros separated by pipe

I have a below file and I wanted to remove the leading zeros in each field separated by pipe

File:
Code:
01/09/2017|2017/09/06|2017/02/06|02/06/2017|02/06/2017 06:50:06 AM|2017/02/06|02/06/2017|02/07/2017 05:45:06 AM|
02/08/2017|2017/08/06|2017/09/06|02/05/2017|02/07/2017 05:40:06 AM|2017/02/06|02/06/2017|02/07/2017 05:05:06 AM|
03/07/2017|2017/07/06|2017/08/06|02/04/2017|02/06/2017 02:07:06 PM|2017/02/06|02/06/2017|02/06/2017 06:50:06 AM|
04/06/2017|2017/06/06|2017/06/06|02/03/2017|02/05/2017 01:54:06 AM|2017/02/06|02/06/2017|02/07/2017 05:05:06 PM|
05/05/2017|2017/05/06|2017/05/06|02/02/2017|02/04/2017 02:01:06 PM|2017/02/06|02/06/2017|02/06/2017 06:50:06 AM|
06/04/2017|2017/04/06|2017/04/06|02/01/2017|02/03/2017 06:07:06 PM|2017/02/06|02/06/2017|02/06/2017 06:07:06 AM|

I have tried the below codes by it is not working
Code:
sed 's/^0*//' file
awk '{sub(/^0*/,"");}1' file
awk -F"|" '{sub(/^0*/,"");}1' file
awk '{printf "%d\n",$0;}' file
awk '{$0=int($0)}1' file

Required output:
Code:
1/9/2017|2017/9/6|2017/2/6|2/6/2017|2/6/2017 6:50:6 AM|2017/2/6|2/6/2017|2/7/2017 5:45:6 AM|
2/8/2017|2017/8/6|2017/9/6|2/5/2017|2/7/2017 5:40:6 AM|2017/2/6|2/6/2017|2/7/2017 5:5:6 AM|
3/7/2017|2017/7/6|2017/8/6|2/4/2017|2/6/2017 2:7:6 PM|2017/2/6|2/6/2017|2/6/2017 6:50:6 AM|
4/6/2017|2017/6/6|2017/6/6|2/3/2017|2/5/2017 1:54:6 AM|2017/2/6|2/6/2017|2/7/2017 5:5:6 PM|
5/5/2017|2017/5/6|2017/5/6|2/2/2017|2/4/2017 2:1:6 PM|2017/2/6|2/6/2017|2/6/2017 6:50:6 AM|
6/4/2017|2017/4/6|2017/4/6|2/1/2017|2/3/2017 6:7:56 PM|2017/2/6|2/6/2017|2/6/2017 6:7:6 AM|

# 2  
Old 03-10-2017
Code:
awk '{	sub(/^0/, "")
	gsub(/ 0/, " ")
	gsub(/[|]0/, "|")
	gsub("/0", "/")
	gsub(":0", ":")
}
1' file

and with a POSIX conforming version of sed:
Code:
sed -e 's/^0//' -e 's,\([|/: ]\)0,\1,g' file

Note, however, that both of the above suggestions, when given the 6th line of your sample input:
Code:
06/04/2017|2017/04/06|2017/04/06|02/01/2017|02/03/2017 06:07:06 PM|2017/02/06|02/06/2017|02/06/2017 06:07:06 AM|

produce the output:
Code:
6/4/2017|2017/4/6|2017/4/6|2/1/2017|2/3/2017 6:7:6 PM|2017/2/6|2/6/2017|2/6/2017 6:7:6 AM|

not the output you said you want:
Code:
6/4/2017|2017/4/6|2017/4/6|2/1/2017|2/3/2017 6:7:56 PM|2017/2/6|2/6/2017|2/6/2017 6:7:6 AM|

I don't see how transforming :06 by removing a leading zero should result in producing :56???
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 03-10-2017
Line 6 is miss typed, sorry for that. Command is working as expected. thanks
# 4  
Old 03-10-2017
Many sed versions have a "word boundary" anchor.
Code:
sed 's/\<0//g'

Multiple leading zero's:
Code:
sed 's/\<0*\([0-9]\)/\1/g'

or

Last edited by MadeInGermany; 03-10-2017 at 05:25 AM.. Reason: fix: should leave a single 0
This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 03-10-2017
Alternatively, in Perl, you could combine the beginning of line with a character class containing all the characters that could precede the redundant zero, like so:

Code:
$ 
$ perl -lne 's/(^|[ :\/\|])0/$1/g; print' data.txt
1/9/2017|2017/9/6|2017/2/6|2/6/2017|2/6/2017 6:50:6 AM|2017/2/6|2/6/2017|2/7/2017 5:45:6 AM|
2/8/2017|2017/8/6|2017/9/6|2/5/2017|2/7/2017 5:40:6 AM|2017/2/6|2/6/2017|2/7/2017 5:5:6 AM|
3/7/2017|2017/7/6|2017/8/6|2/4/2017|2/6/2017 2:7:6 PM|2017/2/6|2/6/2017|2/6/2017 6:50:6 AM|
4/6/2017|2017/6/6|2017/6/6|2/3/2017|2/5/2017 1:54:6 AM|2017/2/6|2/6/2017|2/7/2017 5:5:6 PM|
5/5/2017|2017/5/6|2017/5/6|2/2/2017|2/4/2017 2:1:6 PM|2017/2/6|2/6/2017|2/6/2017 6:50:6 AM|
6/4/2017|2017/4/6|2017/4/6|2/1/2017|2/3/2017 6:7:6 PM|2017/2/6|2/6/2017|2/6/2017 6:7:6 AM|
$ 
$

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

Ho to remove leading zeros from a csv file which is sent from a UNIX script

Hi All, I am using a informatica job to create a csv file and a unix script the mail the generated file.Everything is working fine but I am not seeing leading zeros in the csv file sent in the mail.These zeros were present when the .csv file was generated by informatica procees. Is there any... (11 Replies)
Discussion started by: karthik adiga
11 Replies

2. Shell Programming and Scripting

Help deleting leading zeros in a file

I have a list of numbers extracted and need to delete the leading zeros from them, but when i do so, the command I am using also deletes numbers that end in Zero as well. eg 10, 20, 30, etc this is part of a larger script and the only way I can think of is to try and detect the 10,20 30 etc in... (19 Replies)
Discussion started by: kcpoole
19 Replies

3. Shell Programming and Scripting

Numbers with leading zeros

Hi, i have a variable which conatins values like 00001,0003,00067,00459. I want to use the values one by one and in the same form as they are like 00001,0003,00067,00459. Also can anyone tell me how to increment those numbers by 1,keeping the format as same like 00002,0004,00068,00460.... (5 Replies)
Discussion started by: arijitsaha
5 Replies

4. Shell Programming and Scripting

awk to remove leading zeros for a hex number

Is it possible by using awk to remove leading zeros for a hex number? ex: 0000000011179E0A -> 11179E0A Thank you! (4 Replies)
Discussion started by: carloszhang
4 Replies

5. Shell Programming and Scripting

Help with adding leading zeros to a filename

Hi i need help in adding leading zero to filenames e.g file name in my folder are 1_234sd.txt 23_234sd.txt the output i need is 001_234sd.txt 023_234sd.txt can i do this shell scripting please help (2 Replies)
Discussion started by: rsmpk
2 Replies

6. UNIX for Dummies Questions & Answers

Triml leading zeros in unix

Hi All, How does one trim leading zero's in unix Thanks KP. (7 Replies)
Discussion started by: kingofprussia
7 Replies

7. Shell Programming and Scripting

Help needed in padding leading zeros

Hi all, I have file with numeric values. I need to pad each value with leading zeros such that total lenght of each value is 16. Example: cat tmp.txt 502455 50255 5026 5027 5028 Output 0000000000502455 0000000000050255 0000000000005026 0000000000005027 0000000000005028 Any... (12 Replies)
Discussion started by: jakSun8
12 Replies

8. Shell Programming and Scripting

Removing leading zeros from a variable

How do I remove or add leading zeroa from a variable. To make variable 10 characters long when adding zeros. (6 Replies)
Discussion started by: toshidas2000
6 Replies

9. Shell Programming and Scripting

how to retain leading zeros

Hi All, I am working with a fixed width file Forrmat. C1 Number (10,3) C2 Number (10,3) e.g. c1= 0000000100.000 c2= 0000000020.000 0000000100.0000000000020.000 I have to perform c1 - c2 . i.e. I want answer to be 0000000080.000. but I am loosing the leading zeros( only getting... (3 Replies)
Discussion started by: Manish Jha
3 Replies

10. Shell Programming and Scripting

Leading zeros

How to insert leading zeros into a left-justisfied zip code? e.g. Zip code is written as 60320 which is left-justified to make it be read as 0060320. We have to move it to right-justifiable then insert 2 leading zeros into it... ;) (1 Reply)
Discussion started by: wtofu
1 Replies
Login or Register to Ask a Question