나는 이 일을 하는 데 한 시간 이상을 소비했습니다. 이렇게 어려울 수가 없습니다... 한 파일의 데이터 열을 다른 파일로 인쇄하고 싶습니다. 인쇄하려는 열은 전달된 내용과 스크립트 이전에 발생한 내용에 따라 다르지만 COL이라고 합니다. 정보를 추출해야 하는 파일은 $1.db입니다. $1은 전달된 첫 번째 매개변수입니다(존재 여부를 확인합니다). 내가 현재 가지고 있는 것:
awk -v colvar="$COL" '{ print $colvar }' "$1.db" >> tmp2.tmp
이로 인해 열뿐만 아니라 $1.db의 전체 내용이 tmp2.tmp로 인쇄됩니다.
sh -xv 하면 알 수 있어요
awk -v colvar="$COL" '{ print $colvar }' "$1.db" >> tmp2.tmp
+ awk -v colvar=3 '{ print $colvar }' cop4342.db
따라서 awk var가 COL 값으로 설정되어 있지만 print 문에서는 대체되지 않는 것을 볼 수 있습니다. 나는 이것이 작은 따옴표 때문이라고 생각하지만 무엇을 해야할지 모르겠습니다. 어떤 도움이라도 감사하겠습니다 :)
답변1
하나의 데이터 열만 추출하려면 다음을 사용할 수 있습니다.cut
. 예를 들어, 파일에 다음이 example.dat
포함되어 있는 경우
a b c d e
1 2 3 4 5
그런 다음 cut -d ' ' -f 3 example.dat
주어진
c
3
여기서 필드 구분 기호는 공백이므로 세 번째 열을 선택합니다.
편집하다:이 bash 스크립트는 awk를 호출하여 동등한 출력을 생성합니다.
#!/bin/bash
var1=$1
awk '{print $colvar}' colvar=$1 example.dat