저는 Tcl과 UNIX 프로그래밍을 처음 접했습니다.
다음 명령은 UNIX 명령줄에서는 작동하지만 Tcl 스크립트에서는 작동하지 않습니다.
$ sort -b -k8 abc.txt | awk '!a[$1]++'
error out for 8 (-k8) and 1($1) is not variable
8열을 정렬하려고 합니다.첫 번째그리고그 다음에열 1에서는 고유한 데이터만 선택합니다.
또한 데이터를 파일에 저장해 보았습니다.
답변1
내 생각에는 문자열에서 and 를 이스케이프해야 한다고 생각합니다 []
. 예를 들면 다음과 같습니다.$
send_unix_cmd "sort -k$sort_col top_$host | awk '!a\[\$$uni_col\]++' "
나는 또한 그것을 삭제했다 {}
.
답변2
Tcl
스크립트에서 명령을 실행하려면 를 사용해야 한다고 생각합니다 exec
. 작은따옴표는 스크립트에서 특별한 의미가 없으므로 Tcl
변수를 확장하려고 시도합니다 $1
. 다음을 시도해 볼 수 있습니다.
exec sort -b -k8 abc.txt | awk {!a[$1]++} > output
프로그램의 표준 출력을 리디렉션하지 않으면 명령의 반환 값이 되므로 exec
이를 캡처할 수 있습니다. 예를 들면 다음과 같습니다.
set result [exec sort -b -k8 abc.txt | awk {!a[$1]++}]