2016-06-15 2 views
0

ファイル - のUnixから特殊文字を削除します。は、私はこのようにフォーマットされることになっているファイル持って

ID  QTY 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 

を時々最初の9桁の数字を分離する特殊文字で、このかかわらず、同じようにフォーマットされています。

xxx,xx,xx,xx,xxx 
xxx/xx/xx/xx,xxx 
xx.xxx.xxxx,xxx 

ID全体から特殊文字を削除する方法を知りたいと思います。

+0

私は 'sedの-e持っさん/ [;、() '\ '']//グラム。 IDとQTYの間にある "、"を取り除いて、それを保持する必要があるs/*// g '$ newDir/$ processNew> tmp && mv -f tmp $ newDir/$ processNew'です。 –

+0

最後の列は常に3文字で構成されますか? –

+0

必ずしもそうではありません。スクリプトの後に起動するスクリプトがあり、カンマの左側とカンマの右側に読み込まれていると思います。 –

答えて

0

有用です。両方のフィールドの長さが固定されている場合、つまり9と3文字の場合は、これを使用します。

sed 's/[\/.\,]//g' test2|awk '{print substr ($0, 1,9)","substr ($0, 10,13)}' 

最初のフィールドの長さが9文字に固定されている場合は、このコマンドを使用します。

sed 's/[\/.\,]//g' test2|sed -r -e 's/^.{9}/&,/' 
+0

まれに、IDは小さい番号で始まり、9桁の数字を入力しません。私はそれをコントロールしているが、コードを一緒に使うことは苦痛である。最後のカンマを中間点として使用し、そのカンマの左にある特殊文字を削除する方法はありますか? –

0

ここにはsedスクリプトがあります。それはすべての特殊文字を削除し、特殊文字を含む行の第九の後,を再挿入:

sed -r '/[./,]/ {s/[,/.]//g; s/(.{9})(.*)/\1,\2/g}' 
+0

カンマをそこに残しておきたい場合は、そこに追加する必要はありませんか?時には、最初の9桁が先行ゼロを必要とする場合、そのテストケースを混乱させるでしょう。 –

関連する問題