다음 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)
- 다음을 제외하고 두 번째 필드를 캡처합니다.삼연구개발 및4마지막의 번째 자리
답변2
두 번째 필드를 다음 결과로 바꿉니다. 두 번째 필드의 첫 번째 "20"을 빈 문자열로 바꾸고 결과 줄을 인쇄합니다.
awk '{$2=gensub("20", "", 1, $2); print;}' input > output