다른 개수의 숫자 뒤에 새 줄 삽입

다른 개수의 숫자 뒤에 새 줄 삽입

텍스트 파일에서 10개의 숫자, "-", 1~4개의 숫자로 구성된 "숫자" 문자열 뒤에 새 줄이나 구분 기호를 삽입해야 합니다.

예:

blahblahrandomtext,1234567890-1234blahblah

해야 한다:

blahblahrandomtext,1234567890-1234, blahblah

또는:

blahblahrandomtext,1234567890-1234

blahblah

첫 번째 숫자 세트는 항상 10자이고 그 뒤의 숫자는 1, 2, 3 또는 4자가 됩니다.

1234567890-1
1234567890-12
1234567890-123
1234567890-1234

비슷한 작업에 sed를 자주 사용하지만 마지막 숫자 집합(1~4자 범위)을 처리하는 방법을 찾을 수 없습니다.

답변1

sed해결 방법(구분 기호 삽입 ,):

sed -E 's/(^|[^0-9])[0-9]{10}-[0-9]{1,4}/\1&, /' file
  • -E- 확장 정규식 적용
  • (^|[^0-9])줄의 시작이나 숫자가 아닌 것과 일치합니다. 이렇게 하면 10자리를 초과하는 숫자가 일치하지 않습니다.
  • &- 일치하는 문자열 전체를 가리킨다.

산출:

blahblahrandomtext,1234567890-1234, blahblah

답변2

고정된 자릿수로 이 작업을 수행하는 방법을 알고 있다면 최대 및 최소 반복 문자를 사용하여 이를 수행하는 방법도 알아야 합니다. 해당 \{\}위치 내에서 최소값과 최대값은 다음과 같이 쉼표로 구분됩니다.

sed 's/[0-9]\{10\}-[0-9]\{1,4\}/&,\n/'

GNU의 경우 sed다른 버전에서는 백슬래시와 문자 그대로 개행 문자를 사용하세요.\n

관련 정보