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'