awk,從子字串中刪除字符

awk,從子字串中刪除字符

我有以下 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

相關內容