2016-09-14 14 views
0

안녕하세요. 이제 sybase sql에서 데이터를 가져오고 Excel의 스프레드 시트에 붙여 넣은 데이터를 가져 와서 메일을 보냅니다. 문제는 모든 열과 그 값이 한 줄로 오지 않는다는 것입니다. 이걸 한 줄에 배열해야합니다.Excel에서 SQL 행을 붙여 넣을 때 캐리지 리턴 및 줄 바꿈을 제거합니다.

나는 이것에 대한 약간의 연구를 수행했으며 캐리지 리턴과 줄 바꿈으로 인해 문제가 있음을 발견했습니다. * 필드를 사용하고 특정 열을 사용하지 않고 행을 가져옵니다.

sed "s/\r\n/g" $LOG > temp_log.txt

위 명령은 있지만 사용하는 데 사용됩니다. 캐리지 리턴을 제거하는 가장 좋은 방법은 무엇입니까? 코드 샘플은 약간의 설명으로 높이 평가됩니다. 감사합니다

+0

bash가 아닌 경우'sed $ 's/[\ r \ n] // g' "$ LOG"> temp_log.txt' : bash가 아닌 경우 :'sed $ (printf 's/[\ r \ n ] // $ g ")"$ LOG "> temp_log.txt' –

답변

1

편집 : 첫 번째 의견 후 나는 원래의 질문에 주목.
문제는 이전 단계로 인해 발생했습니다. 이전 단계에서 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을 피하고자 할 때 모든 컬럼의 총 길이, 당신의 trfold -w totallength을 시도 할 수 있습니다 무엇인지 알게되면,

tr -d "\r\n" < "${log}" > temp_log.txt 

이 향상하지만 ISQL가있을 때 그에만 작동합니다 모든 필드를 공백 (탭이 아님)으로 채 웁니다.

+0

모든 제안을 시도한 결과는 이제 한 줄에 모든 열과 값이 첨부 된 결과로 표시됩니다. –

+0

나는 그것이 당신이 원하는 것이라고 생각했습니다. 한 줄에 모든 헤더를 넣고 한 줄에 각 레코드를 넣고 싶다면'isql -w 2000'을 사용하여 출력의 줄 길이를 확장하십시오. –

+0

고마워요. 대답을 수정하기 전에 수정하십시오. –