텍스트 파일에서 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