적절하게 정리하고 구문 분석해야 하는 txt 파일이 많이 있습니다. "SP" 모드에 있을 때 래핑해야 합니다. 찾았으나 'ASSERT.SP' 모드에 없습니다. 찾을 수 있습니다.
샘플 콘텐츠:
SP. 247 for specific issues no really solved
ASSERT. SP. 4532 no so valuable it depends on primary conditions
At first location in London City SP. 3901 must be applied
ASSERT. SP. 23245 must be followed by procedure SP. 8236 in all steps
Special tools are needed for SP. 9734 to be accomplished
원하는 결과:
SP. 247 for specific issues no really solved
ASSERT. SP. 4532 no so valuable it depends on primary conditions
At first location in London City
SP. 3901 must be applied
ASSERT. SP. 23245 must be followed by procedure
SP. 8236 in all steps
Special tools are needed for
SP. 9734 to be accomplished
나의 첫 번째 접근 방식은정규식알아보세요"SP."예아니요앞에 점을 추가하고 "개행 + SP"로 바꿉니다. 그러나 지금까지 성공하지 못했습니다.
sed -r 's/([^\.] )(SP\. )/\nSP\. /g'
답변1
sed
OP에 게시된 솔루션에 대한 일부 조정이 필요합니다.
sed -r 's/([^.] )(SP\. )/\1\n\2/g'
문제 s/([^\.] )(SP\. )/\nSP\. /g
는 폐기 하는 부분은 물론 내부에서도 탈출할 필요가 없다는 점이다 ([^\.] )
..
[]
답변2
정지되지 않은 부품을 희귀한 기호로 교체한 다음 반환하면 동일한 작업이 해결되는 경우가 많습니다.
sed '
s/\(^\s*\|ASSERT\. \)SP\./\1\a/g
s/SP\./\n&/g
s/\a/SP./g
'
답변3
난 이걸 할거야
sed -r '
# for lines without "ASSERT.", add a newline before "SP."
# unless it is only preceded by whitespace
/ASSERT\./! s/^(.*[^[:blank:]].*)(SP\.)/\1\n\2/
# for lines containing "ASSERT.", add a newline before the last "SP."
s/^(.*ASSERT\..*SP\..*)(SP\..*)/\1\n\2/
' file