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