次のCSVがあります。 2017年から20を削除しようとしているため、3717または31817のような形式になります。一部の日付の日付は一桁なので、場所は常に異なります。年は常に4桁なので、2列目の20を右から左にどのように削除しますか?
12 322017 EOD取引J 87.75 123232017 EOD取引J 155 453302017 EOD取引J 270
期待される出力
12 3217 EOD取引J 87.75 12 32317 EODトランザクションJ 155 45 33017 EODトランザクションJ 270
答え1
アッ方法:
awk '{match($2, /^([0-9]+)[0-9]{2}([0-9]{2})$/, a); $2=a[1]a[2]}1' file
出力:
12 3217 EODTRANSACTION J 87.75
12 32317 EODTRANSACTION J 155
45 33017 EODTRANSACTION J 270
match($2, /^([0-9]+)[0-9]{2}([0-9]{2})$/, a)
- 以下を除いて2番目のフィールドをキャプチャします。サム研究開発と4最後の桁
答え2
2番目のフィールドを次の結果に置き換えます。 2番目のフィールドの最初の「20」を空の文字列に置き換え、結果行を印刷します。
awk '{$2=gensub("20", "", 1, $2); print;}' input > output