我有以下 csv。我正在嘗試刪除 2017 年中的 20,因此其格式類似於 3717 或 31817。由於年份總是 4 位數字,如何從右向左刪除第二列的 20?
12 322017 EOD 交易 J 87.75 123232017 EOD 交易 J 155 45 3302017 EOD 交易 J 270
預期輸出
12 3217 EOD 交易 J 87.75 12 32317 EOD 交易 J 155 45 33017 EOD 交易 J 270
答案1
awk方法:
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)
- 將捕獲第二個字段中除3研發和4末尾第 th 位數字
答案2
將第二個欄位替換為以下結果:將第二個欄位中的第一個「20」替換為空字串,然後列印結果行:
awk '{$2=gensub("20", "", 1, $2); print;}' input > output