如何在 awk 命令上传递参数?
How do you pass a parameter on awk command?
我试过了,但似乎不起作用。
请帮忙谢谢
TEST_STRING= test
echo Starting awk command
awk -v testString=$TEST_STRING'
BEGIN {
}
{
print testString
}
END {}
' file2
这里有两个问题:您实际上没有分配给 TEST_STRING
,并且您在与变量值相同的参数中传递程序代码。这两个都是由空格和引用在错误的地方引起的。
TEST_STRING= test
...不给 TEST_STRING
赋值。相反,它运行命令 test
,并将名为 TEST_STRING
的环境变量设置为空值。
也许你想要
TEST_STRING=test
或
TEST_STRING=' test'
...如果空格是故意的。
其次,用-v
将一个变量传递给awk,右边应该用双引号引起来,并且该值和要传递给awk的程序之间必须有不带引号的空格(或其他值)。也就是说:
awk -v testString=$TEST_STRING' BEGIN
...如果 TEST_STRING
不包含空格,则将 BEGIN
作为 testString
值的一部分传递,而不是作为单独的参数传递!
awk -v testString="$TEST_STRING" 'BEGIN
...另一方面,确保 TEST_STRING
的值作为与 testString=
相同的参数的一部分传递,即使它包含空格 - 并确保BEGIN
作为单独参数的一部分传递。
我试过了,但似乎不起作用。 请帮忙谢谢
TEST_STRING= test
echo Starting awk command
awk -v testString=$TEST_STRING'
BEGIN {
}
{
print testString
}
END {}
' file2
这里有两个问题:您实际上没有分配给 TEST_STRING
,并且您在与变量值相同的参数中传递程序代码。这两个都是由空格和引用在错误的地方引起的。
TEST_STRING= test
...不给 TEST_STRING
赋值。相反,它运行命令 test
,并将名为 TEST_STRING
的环境变量设置为空值。
也许你想要
TEST_STRING=test
或
TEST_STRING=' test'
...如果空格是故意的。
其次,用-v
将一个变量传递给awk,右边应该用双引号引起来,并且该值和要传递给awk的程序之间必须有不带引号的空格(或其他值)。也就是说:
awk -v testString=$TEST_STRING' BEGIN
...如果 TEST_STRING
不包含空格,则将 BEGIN
作为 testString
值的一部分传递,而不是作为单独的参数传递!
awk -v testString="$TEST_STRING" 'BEGIN
...另一方面,确保 TEST_STRING
的值作为与 testString=
相同的参数的一部分传递,即使它包含空格 - 并确保BEGIN
作为单独参数的一部分传递。