유닉스 변수에서 개행 문자 제거

유닉스 변수에서 개행 문자 제거

SQL 쿼리를 사용하여 값을 찾은 변수가 있습니다.

이 변수를 다른 변수와 연결하고 싶기 때문에 이 변수에서 개행 문자를 제거하고 싶습니다. 코드는 다음과 같습니다.

dt=`sqlplus -s user/pwd@servicename <<EOF
set feedback off;
set head off;
select  replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual;
exit;
EOF`

echo "test $dt"

답변1

다음을 사용하는 경우 bash매개변수 확장을 사용할 수 있습니다 .

dt=${dt//$'\n'/} # Remove all newlines.
dt=${dt%$'\n'}   # Remove a trailing newline.

/bin/sh다음 사항도 적용되어야 합니다.

dt="${dt%
}"                # Remove a trailing newline.

답변2

다음과 같이 "tr"이 필요한 것 같습니다.

 echo ${dt} | tr -d '\n'

평소처럼 man tr 자세한 내용은

답변3

이는 Linux(bash)에서 작동합니다.

dt="$(echo "$dt"|tr -d '\n')"

Linux 또는 GNU 날짜 유틸리티가 있는 기타 시스템에서는 dt 값도 얻습니다. (Oracle은 포함되지 않습니다...)

dt="$(date -d 'yesterday' +%Y%b%d)_$(date -d '7 days ago' +%Y%b%d)"

답변4

~에서오라클 sqlplus 매뉴얼

설정 페이지 [IZE] {14 n} 페이지당 출력 라인 수를 설정합니다. PAGESIZE를 0으로 설정하면 모든 제목, 페이지 나누기, 머리글, 초기 빈 줄 및 기타 형식 정보가 표시되지 않습니다.

set pagesize 0따라서 헤더에 빈 줄이 생기지 않도록 스크립트에 a를 추가하세요.

대부분의 스크립트에서는 다음 스니펫의 설정을 사용합니다.

dt=`sqlplus -s 사용자/pwd@서비스 이름< < EOF
피드백 닫기
페이지 크기를 0으로 설정
트림을 켜짐으로 설정
자르기 선을 켜짐으로 설정
선 너비를 300으로 설정
에코 끄기 설정
인증을 꺼짐으로 설정

교체(to_char((sysdate-7),'YYYYMonDD')||'_'를 선택하세요.
||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') 듀얼에서;
출구;
EOF'

에코 "테스트$dt$dt"

관련 정보