以下のファイルがあります。 $number(位置19-30)と(位置59-70)をセント単位の数字に置き換える方法は?
更新:すべてのフィールドは同じ固定位置になければなりません。
入力する:
asfdassdfasfasfas 1,719.41 23:55:51 016250 9003286 1,719.41 24.64DR 381000
safsdfoskjshfkkdf 184.00 23:57:53 019516 9007963 184.00 2.94DR 384000
agereafdfbfbgsdgd 1,168.00 23:59:55 012229 9002950 1,168.00 3.54DR 0000
希望の出力:
asfdassdfasfasfas 171941 23:55:51 016250 9003286 171941 24.64DR 381000
safsdfoskjshfkkdf 18400 23:57:53 019516 9007963 18400 2.94DR 384000
agereafdfbfbgsdgd 116800 23:59:55 012229 9002950 116800 3.54DR 0000
ベストアンサー1
古いawk
入力に固定フィールド幅を使用し、必要に応じてフィールドを切り取り、元の幅で埋め直します$2
。$4
awk 'BEGIN {FIELDWIDTHS = "19 11 29 11 30"} {
gsub(/\.|,/,"",$4); gsub(/\.|,/,"",$2);
printf "%s%11s%s%11s%s\n", $1, $2, $3, $4, $5
}' file1
文字の削除は、状況によって変わらず、削除される文字の数に関係なく、フィールドが常に正しい幅で埋められるため、これは一般的な解決策である必要があります(11)。
ゲジン
cat file1
asfdassdfasfasfas 1,719.41 23:55:51 016250 9003286 1,719.41 24.64DR 381000
safsdfoskjshfkkdf 184.00 23:57:53 019516 9007963 184.00 2.94DR 384000
agereafdfbfbgsdgd 1,168.00 23:59:55 012229 9002950 1,168.00 3.54DR 0000
ガジュット
asfdassdfasfasfas 171941 23:55:51 016250 9003286 171941 24.64DR 381000
safsdfoskjshfkkdf 18400 23:57:53 019516 9007963 18400 2.94DR 384000
agereafdfbfbgsdgd 116800 23:59:55 012229 9002950 116800 3.54DR 0000