다음 CSV가 있습니다. 2017년에서 20을 제거하려고 하므로 3717 또는 31817과 같은 형식이 됩니다. 일부 날짜는 한 자리 숫자의 날짜로 인해 위치가 항상 다릅니다. 연도는 항상 4자리이므로 오른쪽에서 왼쪽으로 가는 두 번째 열에서 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)
- 두 번째 필드에서 다음을 제외한 모든 숫자를 캡처합니다.삼rd와4마지막 숫자
답변2
두 번째 필드를 다음 결과로 바꿉니다. 두 번째 필드의 첫 번째 "20"을 빈 문자열로 대체한 후 결과 줄을 인쇄합니다.
awk '{$2=gensub("20", "", 1, $2); print;}' input > output