:과 콜론 사이에서 처음 나타나는 문자열을 추출하는 방법

:과 콜론 사이에서 처음 나타나는 문자열을 추출하는 방법

데이터베이스에 입력하기 전에 재처리해야 하는 매우 긴 파일이 있습니다. 이 파일의 데이터 형식은 다음과 같습니다.

Error for: 111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for: 198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for: 198.245.175.52,[Errno 104] some text here

다음과 같이 파일을 다시 정렬해야 합니다.

Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here

1) 단어 뒤에 공백이 있다는 점에 유의하십시오 for: . 2) 이 문자는 :예와 같이 한 줄에 여러 번 나타날 수 있습니다. 그래서 첫 번째 항목을 교체해야 합니다.for:[space]

sed검색 및 교체를 생각했습니다 . 하지만 내가 원하는 위치로 검색을 제한하는 방법을 모르시나요?

답변1

SED 사용:

sed -e 's/: /,/' file > newFile

Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here
  • 기본적으로 sed첫 번째 항목이 대체됩니다.

답변2

awk해결책:

 awk '{sub(/: /,",")}1' file


Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here

관련 정보