2017-06-30 4 views
-1

ファイルとして私はdateOfBirthのためCSV3rdフィールドを持っている:私は02/04/1996にそのフォーマットを変更したい02041996バッシュScript-プロセスCSVは

。特定の桁数の後に/を追加する方法はありますか?

+0

は、例示的な線を示す。さらに、19996年には – RomanPerekhrest

+0

が表示されました。申し訳ありませんが、それはタイプミスです。1996年です。 – Aayushi

答えて

0

splitの機能を使用してawkのファンクションを分割し、各フィールドを何も指定しないでください。""。後でprintステートメントでは、各フィールドはa[N]を使って呼び出されます。

awk -F, -v OFS=, '{split($3,a,"");$3=a[1]a[2]"/"a[3]a[4]"/"a[5]a[6]a[7]a[8]}1' csvFile 
+1

ありがとうPS!それは私を救う.. – Aayushi

0

使用awkのさんsubstr機能:

awk -F, '{ $3=substr($3,1,2)"/"substr($3,3,2)"/"substr($3,5) }1' OFS=',' file 
0

awk解決策:

awk -F, '{$3 = gensub(/([^ ]{2})([^ ]{2})(.*)/, "\\1/\\2/\\3", "g", $3)}1' OFS=',' 

サンプル:

AMD$ echo " col1 , col2, 02041996, col4 " | awk -F, '{$3 = gensub(/([^ ]{2})([^ ]{2})(.*)/, "\\1/\\2/\\3", "g", $3)}1' OFS=',' 
col1 , col2, 02/04/1996, col4