두 개의 탭을 사용하여 isql 출력 열을 분리하는 방법

두 개의 탭을 사용하여 isql 출력 열을 분리하는 방법

Sybase 쿼리를 실행하고 출력을 제공하는 유틸리티(isql 주위의 래퍼)가 있습니다. 두 개의 탭으로 두 개의 열을 분리하고 싶습니다. 이 유틸리티는 다음과 같이 도움이 됩니다.

<-s>       : resets the column separator character, which is blank by default

-s\\t모든 열을 구분하기 위해 탭을 사용해 보았습니다 .

그러나 -s\t\t를 시도하면 이상한 결과가 나타납니다. 예를 들면 다음과 같습니다.

1\t\tS1\t\tmaindb\t\t1\t\t1\t\t1\t\t1\t\t50\t\t10\t\t0\t\tNULL\t\tNULL\t\tNULL\t\tNULL\t\t1\t\t

나도 그것을 시도했지만 -s' '(eight spaces), -s"\t\t", -s/\t/\t(I knew this wouldn't work, but still), -s\2t, -s\t+1아무것도 작동하지 않는 것 같습니다.

이 문제를 어떻게 해결할 수 있나요?

답변1

isql명령이 허용하는 경우단일 문자가 아닌 옵션에 대한 인수로 -s(테스트할 수 없음) 다음을 사용하여 두 탭을 모두 지정할 수 있어야 합니다.

isql -s $'\t\t' ...

bash껍질 에 . 2개를 삽입할 수도 있습니다.단어탭을 두 번 누르 Ctrl+VTab거나

isql -s "$( printf '\t\t' )" ...

옵션이 여러 구분 기호를 허용하지 않는 경우(매뉴얼에서 제안한 대로 "열 구분 기호"라고 함)특징" 대신 " 열 구분 기호"), 그러면 쿼리 결과를 사후 처리하는 것 외에는 할 수 있는 일이 많지 않습니다.

다음은 표준 입력 스트림에서 나오는 모든 탭을 두 배로 늘립니다 isql( bash탭과 함께 삽입을 사용합니다 $'\t'. GNU는 sed위에서 언급한 해킹이나 다른 쉘을 사용하지 않고 이를 이해합니다):\t$Ctrl+VTabprintf

isql -s $'\t' ... | sed $'s/\t/&&/g'

관련 정보