필드=변수를 기준으로 행 필터링

필드=변수를 기준으로 행 필터링

VAR 값과 동일한 첫 번째 필드를 필터링하고 싶습니다. 비슷한 문제도 있어요여기, ~해당 솔루션(SOL1)을 재현할 수 없습니다. 그러나 그기반으로eval(SOL2) 작동하지만 인위적인 것 같습니다. 좀 더 SOL1과 유사한 솔루션을 찾고 있습니다.

$ cat tmp
a   b   c
d   e   f
g   h   i
$ awk '$1 ~ /d/' tmp
d   e   f
$ VAR='d'

SOL1(실패)

$ awk '$1~VAR' tmp
a   b   c
d   e   f
g   h   i

SOL2(해결 방법)

$ CMD='awk '"'"'$1'"~/$VAR/'"
$ echo "$CMD"
awk '$1~/d/'
$ eval "$CMD" tmp
d   e   f

답변1

문자열을 ==.

VAR="d"
awk -v var="$VAR" '$1==var' file

산출:

정의

에서 man awk:

-v var=val: 프로그램이 실행되기 전에 var 변수에 val 값을 할당합니다. 이러한 변수 값은 AWK 프로그램의 BEGIN 규칙에서 사용될 수 있습니다.

답변2

Done by 2 methods

방법 1:

var="d"
sed -n '/'$var'/p' file

산출

d   e   f

파이썬

#!/usr/bin/python
import re
var="d"
k=open('ooo','r')
for i in k:
    if var in i:
        print i.strip()

산출

d   e   f

관련 정보