데이터 정리 문제 - 후행 공백 및 쉼표 조합을 제거하는 정규식

데이터 정리 문제 - 후행 공백 및 쉼표 조합을 제거하는 정규식

내 주소 문자열(초기 프로그래밍 불량으로 인해)에 너무 많은 자유 텍스트를 입력할 수 있었습니다. 이 상속된 혼란을 정리하는 과정에서 주소 필드 끝에 제거하고 싶은 쉼표가 종종(그리고 종종 그렇지 않음) 있음을 발견했습니다.

문제는 (다시 말하지만, 자주!) 해당 입력 데이터(라인당 지불...)에 대한 입력 문자열이 다음과 같다는 것입니다.

`address_1_string  ,  `

이것은 address_1_string이고 그 뒤에 두 개의 공백이 있고 그 뒤에 제거하려는 쉼표가 있고 그 다음에는 다시 두 개의 공백이 있습니다. 공백 수(쉼표 앞 또는 뒤)는 임의적이며 일반적으로 0 - 5입니다. address_string_1문제는 그 자체에 내부(유효한) 쉼표가 있을 수 있다는 사실로 인해 더욱 악화됩니다.

그래서 제가 찾고 있는 것은 줄 끝에 도달하여 모든 후행 공백과 첫 번째 쉼표를 제거한 다음 유효한 [a-zA-Z0-9] ([: 알파벳 : ]?) 문자가 발견되었습니다.

정규식에 대한 개념이 있지만 급여 등급을 벗어납니다. 이것은 Stackexchange의 첫 번째 게시물이므로 잘못된 위치에 게시한 경우 리디렉션해 주시기 바랍니다. 티아.

답변1

< input sed 's/[[:space:],]*$//' > output

줄 끝의 모든 공백과 쉼표 문자가 제거됩니다.

파일을 제자리에서 편집하기 위해 일부 구현에는 sed의 옵션에서 -i영감을 받은 옵션이 있습니다.perl-i

sed -i 's/[[:space:],]*$//' input-and-output    # GNU, busybox, NetBSD, OpenBSD
sed -i '' 's/[[:space:],]*$//' input-and-output # FreeBSD, macOS

관련 정보