Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 229
  • Last Modified:

Removing tab from a column inside a file.

Hi All,
I haveone file which has 100 records each separated by "|". In some records, one column has tab . How can i delete tab form that column inside a file.
example
20080609|67961856|EQUITY PARTNERS 2004 EMPLOYEE FUND, L.P       |EQUITY PARTNERS 2004 EMPLOYEE FUND, L.P        |

There is a tab after L.P.
I used sed 's/^[ \t]*//;s/[ \t]*$//' .. but this didnot help for tab between line.

Can Somebody Help?

0
sunilbains
Asked:
sunilbains
  • 6
  • 5
1 Solution
 
ozoCommented:
sed 's/[ \t]*\|/|/g'
0
 
sunilbainsAuthor Commented:
hi,
    iam getting following output..after tunning above command.
|2|0|0|8|0|6|0|9|||8|9|4|8|4|7|4|7|||M|a|t|s|u|m|o|i|n|c|.|||||P|r|i|v|a|t|e|P|l|a|c|e|m|e|n|t|||A|c|t|i|v|e|||2|0|0|3|0|1|2|0|||||0|.|0|0|||||||||||||||||||||||
I just need to remove "tab"  from records.
0
 
ozoCommented:
which version of sed are you using?
sid you try it without the \ in front of the |
0
Veeam Disaster Recovery in Microsoft Azure

Veeam PN for Microsoft Azure is a FREE solution designed to simplify and automate the setup of a DR site in Microsoft Azure using lightweight software-defined networking. It reduces the complexity of VPN deployments and is designed for businesses of ALL sizes.

 
sunilbainsAuthor Commented:
GNU sed version 4.0.7
I dont want  to substitute tab with "|"
sed 's/[ \t]*\|/|/g'  ---  this is what this comand doing???
for below record,
20080609|67961856|EQUITY PARTNERS 2004 EMPLOYEE FUND, L.P       |EQUITY PARTNERS 2004 EMPLOYEE FUND, L.P        |

output should be
20080609|67961856|EQUITY PARTNERS 2004 EMPLOYEE FUND, L.P  |EQUITY PARTNERS 2004 EMPLOYEE FUND, L.P |




0
 
ozoCommented:
did you try it without the \ in front of the |
sed 's/[ \t]*|/|/g'  
0
 
sunilbainsAuthor Commented:
Hi,
It worked..
But will it replace tab between two words with space  also?. or it will jon two words
for example EQUITY                 PARTNERS    will it be EQUITY PARTNERS  or EQUITYPARTNERS
0
 
pepecuraCommented:
sed 's/[\t*]//g'

should work. * character is inside the brackets.
0
 
ozoCommented:
Do you want it to replace tab between two words with space  also?.
0
 
sunilbainsAuthor Commented:
hi,
I tried this command sed 's/[\t*]//g'
it worked fine for everything. So this command basicallt replace all TAB with nothing??
So instead of sed 's/[ \t]*|/|/g'    i can rely on sed 's/[\t*]//g'  for deleting tabs from the file ?
0
 
ozoCommented:
That will also delete any * character anywhere in the file?
the ^ or $ or | restricts it to only deleting next to the beginning of the line, end of the line or | character respectively
0
 
sunilbainsAuthor Commented:
by saying substitute tab with space i ment that I dont want to join two words  after deleting tab between them
for example. EQUITY                 PARTNERS   should  be EQUITY PARTNERS  not  EQUITYPARTNERS
But i think command sed 's/[\t*]//g'  will not append two words. Correct me if iam wrong??
0
 
ozoCommented:
s/[\t ]\{1,\}/ /g
will replace strings of one or more tabs and spaces with space
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now