
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