2011-04-20 17 views
1

INPUTファイル:sedとawkコマンドのヘルプが必要ですか?

O、FF、$ 1123.81、TY、20100608、JJJ ,, 13.180002 ,,,,

O、GG、$ 1794.06、JUI、20100608、JJJ ,, 13.180008 ,,,,

O、GG、$ 1794.06、JUI、20100608、JJJ ,, 13.180008 ,,,,今まで,,(,,との間のスペース)、私は交換する必要があり、入力ファイルで発生

可能性があり、誰ください。これで私を助けてくれますか?このような

答えて

1

何かが動作することがあります。

sed -e 's/,,/, ,/g' inputfile 

のbash-O-logistが指摘するように、,,,,のようなもののために望ましい結果が, , , ,かもしれません。もしそうなら、これは(2回コマンドを実行する)を使用することができます

sed -e 's/,,/, ,/g; s/,,/, ,/g' inputfile 
+0

私はこれが一度だけ効果があることを望む..私はenのためにする必要がありますタイヤファイル – jcrshankar

+0

これはすべての行で機能します。 'g'を省略すると、すべての行のすべてのペアではなく、すべての行の最初のダブルカンマに影響します。 –

+0

@jcrshankar:私はあなたの質問を理解しないかもしれませんが、sedスクリプトは、ファイル内のすべてのインスタンスを置き換えます。 –

3

純粋なbashスクリプト

#!/bin/bash 
# tested on bash 4 

while read -r line 
do 
    while [[ $line =~ ,, ]] 
    do 
     line=${line//,,/, ,} 
    done 
    echo "$line" 
done < file 

サンプル出力

bash4> bash comma.sh 
O,ff,$1123.81,ty,20100608,jjj, ,13.180002, , , , 
O,gg,$1794.06,jui,20100608,jjj, ,13.180008, , , , 
O,gg,$1794.06,jui,20100608,jjj, ,13.180008, , , , 

余分なループが使用されている間ことに注意してください、次を変更する,,, ,

+0

うん、感謝のbashのためにマークを付けます。これが助けてくれるといいなあ私はこれをチェックし、furthorの助けを求める – jcrshankar

+0

良いもの。純粋なbashをせずにsed ...ええ; ) – kokosing

+0

ながら何であるか[[$行=〜,,]]、私のkshでequvalent文を教えてくださいますでしょうか? – jcrshankar

関連する問題