편집 : 첫 번째 의견 후 나는 원래의 질문에 주목.
문제는 이전 단계로 인해 발생했습니다. 이전 단계에서 isql에 의해 행이 접혀졌습니다. 하나의 레코드로 함께 붙여야하는 줄을 예측하기 어렵 기 때문에 손상 복구가 매우 어려울 것입니다.
원래의 문제는 isql이 더 많은 데이터를 1 행에 넣으려고하면 사라질 수 있습니다 : isql -w 2000
.
라인을 결합하는 방법을 알아 보려면 tr
(라인 작업에 sed
사용)을 사용할 수 있습니다. $ LOG에 공백이 몇 가지 경로/파일이있을 때 함께 모든 라인을 가입 이
cat $LOG | tr -d "\r\n" > temp_log.txt
가능합니다, 위의 명령이 실패합니다. 그리고 아마도 변수 소문자 사용 중괄호에서 자신의 변수를 작성하는 데 사용 얻을 :
cat "${log}" | tr -d "\r\n" > temp_log.txt
을 그럴 필요는 단일 문자를 찾고, 이들의 조합에 대한 너트, 그것은 또한 하나의 \n
삭제됩니다 있도록.
그리고 당신은 cat
을 피하고자 할 때 모든 컬럼의 총 길이, 당신의 tr
후 fold -w totallength
을 시도 할 수 있습니다 무엇인지 알게되면,
tr -d "\r\n" < "${log}" > temp_log.txt
이 향상하지만 ISQL가있을 때 그에만 작동합니다 모든 필드를 공백 (탭이 아님)으로 채 웁니다.
bash가 아닌 경우'sed $ 's/[\ r \ n] // g' "$ LOG"> temp_log.txt' : bash가 아닌 경우 :'sed $ (printf 's/[\ r \ n ] // $ g ")"$ LOG "> temp_log.txt' –