Bash 在这种情况下如何使用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”而不是变量值。您的正则表达式正在寻

因此,我尝试使用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”而不是变量值。

您的正则表达式正在寻找一个文本“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调用的工具。