web-dev-qa-db-ja.com

カンマ区切り値のリストで機能する正規表現を探しています

カンマで区切られた3つの長い数字の行があります。真ん中の数字を削除し、最初の数字と最後の数字だけをコンマで区切っておくのがやりたいです。

現在:

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

望ましい結果:

123456789123,834567885544334
123456789125,834567885544333
123456789126,834567885544337

これを試してみましたが、次の正規表現では機能しませんでした。

  • 文字列を検索するための正規表現:%[0-9]+,[0-9]+,[0-9]+
  • 文字列を置き換える正規表現:^1,^2

私が達成したいことを実際に行う正規表現はどれですか?

注-現在、Windows 7で実行されるUltraeditというアプリケーションを使用しています。問題を解決できる、Windows用のより優れたテキスト編集アプリケーションをお勧めする場合は、お知らせください。

7
user836026

各行の中央の番号を何にも置き換えるだけです。

エディターで

つまり、エディターで正規表現を検索して置換します

,[0-9]+,

(これは、両側にコンマが付いた数字のみに一致します。入力では中央の数字になります)単一のコンマ:

,

Ultraeditは正規表現の検索と置換をサポートしていると思います。そうでない場合は、私が知っているNotepad ++を試してください。

コマンドラインから

質問にタグを付けたので Shell-script 、コマンドラインからそれを行う方法は次のとおりです。

sed

sedを使用します。これは、CygwinまたはGnuWin32の一部としてWindowsでも使用できる標準のLinuxコマンドです。

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

パワーシェル

Jensは、WindowsPowershellでも実行できると指摘しました。 この説明 を参照してください。

10

正規表現の構文は、アプリケーションごとに異なります。私はUltreditに慣れていないので、一般的な回答をします

正規表現に括弧のキャプチャがありません

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

3
RedGrittyBrick

テキストを置き換えるには、括弧を使用して適切な部分式にタグを付ける必要があります。

UltraEditでは、次の正規表現を検索する必要があります。

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

Awk相当!

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

2
Brandon Kreisel