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