トレーラーレコードから前のゼロを削除するだけです。
H|09/24/2015
D|25.00|Name1|Tfile|5
D|7.25|Name2|Tfile|1
T|032.25|03
私はこれを行うことができます:
sed -e 's/T|0*/T|/g' SampleFileName
トレーラーの後ろの先行ゼロを削除しましたが、それ以降はT|32.25
削除しませんでした03
。
ベストアンサー1
sedを使う
最後のフィールドのみを置き換えるには、正規表現を行末に固定する必要があります。
$ sed -Ee '/T/ s/[|]0*([[:digit:]]+)$/|\1/' SampleFileName
H|09/24/2015
D|25.00|Name1|Tfile|5
D|7.25|Name2|Tfile|1
T|032.25|03
$
行末でのみ一致します。 (オプション)/T/
条件は交換を包含に制限しますT
。
上記はGNU sedでテストされていますが、BSD(OSX)sedでも動作してほしいです。
awkを使う
awk は行をフィールドに分割します。 awkを使用すると、$NF
最後のフィールドでのみ置換(awk call)を実行できます。
$ awk -F'|' '/T/{sub(/^0+/,"",$NF)} 1' OFS='|' SampleFileName
H|09/24/2015
D|25.00|Name1|Tfile|5
D|7.25|Name2|Tfile|1
T|032.25|3