Bash 在这种情况下如何使用awk函数
因此,我尝试使用awk分解一个列表并将数据放入单独的文件中。到目前为止我有这个。。但它不起作用:Bash 在这种情况下如何使用awk函数,bash,shell,awk,Bash,Shell,Awk,因此,我尝试使用awk分解一个列表并将数据放入单独的文件中。到目前为止我有这个。。但它不起作用: #!/bin/bash for i in "45" "64" "60" "70" "74" "76" do awk -v x="${i}" -F, '/x/ { print }' alluls.csv > $i.csv done echo "script has run" 然而。。我得到了所有的空白文件您的正则表达式正在寻找一个文本“x”而不是变量值。您的正则表达式正在寻
#!/bin/bash
for i in "45" "64" "60" "70" "74" "76"
do
awk -v x="${i}" -F, '/x/ { print }' alluls.csv > $i.csv
done
echo "script has run"
然而。。我得到了所有的空白文件您的正则表达式正在寻找一个文本“x”而不是变量值。您的正则表达式正在寻找一个文本“x”而不是变量值。
awk
变量不在/…/
中求值;您必须使用match
功能
awk ... 'match($0, x) { print }'
awk
变量不在/…/
内计算;您必须使用match
功能
awk ... 'match($0, x) { print }'
实现这一点的明智方法是使用单个awk命令(未经测试):
实现这一点的明智方法是使用单个awk命令(未经测试):
你为什么在这里使用awk?@anubhava可能是因为grep不可用:)你为什么在这里使用awk?@anubhava可能是因为grep不可用:)啊,我没有意识到,
~
对RHS不需要/…/
。@chepner-/
是用来划分RE常量的,就像“…”
用于分隔字符串常量~
是重新匹配运算符,就像“==”是字符串/数字相等运算符一样。您可以在定义为RE常量($0~/abc/
)的REs上使用~
运算符,将其用作字符串常量($0~“abc”
),或存储在变量(x=“abc”;$0~x
)中,这意味着每种类型都有细微的不同。啊,我没有意识到~
不要求RHS使用/…/
。@chepner-/…/
用于分隔RE常量,就像用于分隔字符串常量一样~
是重新匹配运算符,就像“==”是字符串/数字相等运算符一样。您可以在定义为RE常量($0~/abc/
)的REs上使用~
运算符,作为字符串常量($0~“abc”
),或存储在变量(x=“abc”;$0~x
)中,这对每个REs都意味着细微不同的内容。@user2883071在awk变量前面添加$
的前缀并不比使用C变量多。awk不是shell,它是一个可以从shell调用的工具。@user2883071在awk变量前面加上$
的前缀并不比在C变量前面加的前缀多。awk不是shell,它是一个可以从shell调用的工具。