0

正規表現で、特定の水平位置にある文字をどのように一致させることができますか?n位置のコンマをコンマとそれに続く3つのスペースに置き換えたい、つまり

s/,/, /        # replace ',' at position n=4 with ', '

しかし、これらの正規表現は依然として水平位置の制約を見逃しています。

一緒に

s/,/,  /       # replace ',' at position n=3 with ',  '
s/,/,   /      # replace ',' at position n=2 with ',   '

これを使用して、データ列を再フォーマットします。

1,10000,0.187929453,10000
162,28000,0.045417083,28000
22,100000,0.020914811,100000
64,1000,0.234950091,10000
65,46000,0.037523632,46000
66,118000,0.015378538,118000

1,   10000,  0.187929453, 10000
162, 28000,  0.045417083, 28000
22,  100000, 0.020914811, 100000
64,  1000,   0.234950091, 10000
65,  46000,  0.037523632, 46000
66,  118000, 0.015378538, 118000
4

2 に答える 2

3

ここで正規表現を使用する必要はありません。この種の問題は awk を使用して簡単に解決できます。次のコードを検討してください。

awk -F"," 'NF==4{printf("%-5s%-8s%-12s %s\n", $1",", $2",", $3",", $4)}' in.file

ライブデモ: http://ideone.com/bXJXX5

于 2013-03-13T09:13:58.940 に答える
2

次のようなものを試してください:

s/^(.{3}),/$1,   /

構文は言語によって異なります。上記はPerlで機能します。一部の言語では、の\1代わりになり$1ます。

ほとんどの言語には、あなたが望むことを行うためのはるかに簡単な方法があります。PerlとCはprintf出力をフォーマットする必要があります:

#another Perl example:
printf '%4s %7s %s %s', map({ $_ . ',' }, split(',',$line));
于 2013-03-13T08:47:17.160 に答える