アプリ版:「スタンプのみでお礼する」機能のリリースについて

sedコマンドを使用して、カンマで区切られた
3フィールド目の空白文字列を全てNULLに
置換するにはどうすればよろしいのでしょうか。
教えて下さい。
(例)
a c,d f, 12
g i,j l, 45
m o,p r, 3

a c,d f,12
g i,j l,45
m o,p r,3
のようにしたいのです。

A 回答 (4件)

sedでは正規表現が使用できるようなので単純に考えて



sed -e 's/^(.*?,){2}\s/\1/g'

こうではないでしょうか。
試していないので(というか所持していないので)実際にはどうなるか
分かりませんけど。
    • good
    • 0

第三フィールドの空白をNULLに置換したいというのは質問の例で言うと


数字の前の空白を消すということですか?

フィールドの区切り以外にカンマは出てこないですよね?

>sed -e 's/^(.*?,){2}\s/\1/g'

正規表現はツールによって違いがあって、*?とか\sはsedでは使えないことがほとんどです。
    • good
    • 1

こんなのでどうでしょうか。


一応質問の例ではうまくいくはずです。

sed -e 's/\([^,]*,\) */\1/2'
or
sed -e 's/\(\([^,]*,\)\{2\}\) */\1/'

##1のパターンは*?やらが使えてもダメですね

空白文字列にはタブなども含まれるとかなら適当に修正してください。

この回答への補足

大変ありがとうございます。
すみませんが、下記の場合、各々が何を
意味しているのか簡単に説明をして頂け
ないでしょうか。
sed -e 's/\([^,]*,\) */\1/2'

補足日時:2008/08/02 17:18
    • good
    • 0

>各々が何を意味しているのか



各々とは?
正規表現のメタ文字であればちょっと調べればわかると思いますが。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!