7

I have line of 3 long numbers separated by comma. What I want to do is to delete the number in the middle, and leave only first number and last number separated by a comma.

Currently:

123456789123,723456789123456,834567885544334
123456789125,723456789123457,834567885544333
123456789126,723456789123458,834567885544337

Desired result:

123456789123,834567885544334
123456789125,834567885544333
123456789126,834567885544337

I tried doing this, but it didn't work with these regular expressions:

  • regular expression to find string: %[0-9]+,[0-9]+,[0-9]+
  • regular expression to replace string: ^1,^2

Which regular expression actually does what I want to achieve?

Note - I'm currently using an application called Ultraedit that runs on Windows 7, if you recommend a better text editing application for Windows that can solve my problem please let me know.

1
  • I edited your question, if you are unhappy with the changes feel free to revert or edit it again.
    – Baarn
    Aug 1, 2012 at 10:50

4 Answers 4

10

You can simply replace the middle number of each line with nothing.

In the editor

That is, in your editor, search-and-replace the regex

,[0-9]+,

(which only matches numbers with commas on both sides, which for your input is just the middle number) with a single comma:

,

I assume Ultraedit supports regex search-and-replace. If not, try Notepad++, which I know does.

From the command line

Since you tagged your question , here's how to do it from the command-line.

sed

Use sed, a standard Linux command also available for Windows as part of Cygwin or GnuWin32:

C:\>sed -e 's/,[0-9]+,/,/g' filename.txt

Powershell

Jens pointed out that you can also do it in Windows Powershell; see this explanation.

3
3

Regex syntax varies from application to application. I am unfamiliar with Ultredit and will give a generaql anser

Your regex lacks capturing parentheses

([0-9]+),[0-9]+,([0-9]+)

2

In order to replace text, one needs to tag the proper sub-expression using parentheses.

In UltraEdit, you must search for the following regular expression:

 %^([0-9]+^),[0-9]+,^([0-9]+^)
2

Awk Equivalent!

echo "$Variable" | awk 'FS="," { print $1","$3 } '

You must log in to answer this question.

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