行の日付フィールドの末尾0を置き換える

行の日付フィールドの末尾0を置き換える

これは私の入力です。

"004|B20A|2008-09-01 00:00:00.000|C|2008-09-01 00:00:00.070|4277"

私の出力は

"004|B20A|2008-09-01 00:00:00.0|C|2008-09-01 00:00:00.07|4277"

答え1

次のことができます。

perl -F'[|]' -lae 's/\.\d+?\K0+$// for $F[2], $F[4]; print join "|", @F'

(ここで仮定すると日付フィールドそれぞれ3番目5番目

答え2

ファイルがあります

perl -ip -e 's/(\.\d+?)0*(\|)/$1$2/g' "$F"

またはパイプ

echo "$V" | perl -pe 's/(\.\d+?)0*(\|)/$1$2/g'

答え3

これはどうですか? :

perl -pe 's/(\.\d+?)0*(\D)/$1$2/g'

入力例には先頭と末尾に二重引用符が含まれているため、おそらく行末に浮動小数点はありません。

関連情報