我有一个以逗号分隔的.txt文件,结构如下:
ABC,NAME1,LASTNAME1
DEF,NAME2,LASTNAME2
GHI,NAME3,LASTNAME3
运行时:
$ ./script.sh file.txt
#!/bin/bash
awk -F, '/NAME1/{print $3}' "$1"
我得到了我想要的输出:
LASTNAME1
尝试通过将变量传递给NAME1
来替换awk
:
$ ./script.sh file.txt NAME1
#!/bin/bash
awk -v n="$2" -F, '/$n/{print $3'} "$1"
我根本没有得到任何输出。我查了一下,在bash中输入的$2
确实是NAME1
。我错过了什么?
答案 0 :(得分:1)
Awk中的变量名称不前缀为$
,
所以它应该只是n
而不是$n
。
此外,您不能在/.../
表达式中使用变量。
你可以这样写:
awk -v n="$2" -F, '$0 ~ n {print $3}' "$1"
顺便说一下,如果n
参数与第二列中的值完全匹配,
那么在==
$2
上使用awk -v n="$2" -F, '$2 == n {print $3}' "$1"
的完全匹配条件会更好:
import csv
def rawInputTest():
x = raw_input(">>> Input: ")
print x
return x
def writeToFile(xx):
with open('WorkOrderLog.csv', 'a') as f:
w=csv.writer(f)
a=0
b=0
if xx>500:
b=xx
elif xx<500:
a=xx
g=[a,b]
w.writerow(g)
while (True):
rawInputTest()
writeToFile(rawInputTest())