2017-10-25 2 views
0

awk 명령의 변수를 사용하여 if 조건의 파일 열을 읽는 방법은 무엇입니까?awk - AWK 변수 (조건 인 경우)

fcolumn1 값이 2, startdate, 2014-09-22 00:00:00, enddate2014-09-23 00:00:00 인 아래 샘플 파일의 2 열을 읽으라고 말하십시오. 명령이 작동 아래

abcd,2016-04-23 02:35:34,sdfsdfsd 
sdsd,2016-04-22 02:35:34,sdfsdfsd 

:

awk -v startdate="$startdate" -v enddate="$enddate" -F"," ' 
{ 
    if ($2>=startdate && $2<enddate) 
    { 
     print $2 
    } 

}' 

기대 아래로 $2가 동적 만드는 것입니다 :

awk -v startdate="$startdate" -v enddate="$enddate" -v "fcolumn1=${fcolumn1}" -F"," ' 
{ 
    if (fcolumn1 != "") 
    { 

     if (**$fcolumn1**>=startdate && **$fcloumn1**<enddate) 
     { 
      print "$fcolum1" 
     } 
    } 
}' 

답변

1

먼저 awk 프로그램은 다음에 따라 이후의 if 블록 (불필요한 간소화) 구조 :

CONDITION { ACTIONS } CONDITION {ACTIONS} ... 

당신은 if 문없이 조건을 작성할 수 있습니다

awk '$2>=startdate && $2<enddate { print $2 }' file 

당신이 awk에서 변수를 사용하여 열을 처리 할 수 ​​있습니다, 변수를 통해 실제 열 번호가 구성 확인하려면 , 이렇게 :

awk -v col=2 '{print $col}' 
+0

변수에서 $ 2 동적으로 만들고 싶습니다. – Bunny

+0

열 번호를 변수로 만들려면 다음을 사용할 수 있습니다.'awk -v col = 2 '$ col <= startdate {...}'' – hek2mgl