Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have data of the following format that I want to input into LibreOffice Calc:

data | num | num | num | num

For some reason LibreOffice does not think the string "3214 " is a number by default (trailing white space).

I want to replace (\s)*| with |, where \s stands for space and * for the Kleene star operation. And do this at multiple places in each line (all matches).

I tried:

sed -i 's/(\s)*|/|/' DataStats0914.txt

But it has no effect. What am I doing wrong?

share|improve this question
Is another way to phrase this to just delete all whitespace? In that case, just a comment on the right tool for the right job: tr -d ' ' < DataStats0914.txt > DataStats0914.txt.modified. – Daniel Andersson Oct 22 '12 at 9:00
up vote 0 down vote accepted

This will do it.

sed 's/ *|/|/g'
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .