使用awk打印变量

使用awk打印变量,awk,Awk,我正在尝试使用awk打印变量。下面是我编写的代码,但是$svr似乎没有得到声明变量的值 input.txt: string abcd char &% 代码: 输出应如下所示: abc.net OK def.net OK 您使用awk读取变量时出错,请参见此处: 使用数组是存储服务器名称的更好方法 如果您喜欢测试文件,并且仅在输出时获取是可以的,那么最好在结束块中打印结果 PS这仍然不能正常工作,因为它不清楚你想在哪里测试什么 这是一个尝试,看看我是否在正确的轨道上 您有一组文件

我正在尝试使用awk打印变量。下面是我编写的代码,但是$svr似乎没有得到声明变量的值

input.txt:

string abcd
char   &%
代码:

输出应如下所示:

abc.net OK
def.net OK

您使用awk读取变量时出错,请参见此处:

使用数组是存储服务器名称的更好方法

如果您喜欢测试文件,并且仅在输出时获取是可以的,那么最好在结束块中打印结果

PS这仍然不能正常工作,因为它不清楚你想在哪里测试什么

这是一个尝试,看看我是否在正确的轨道上

您有一组文件。您希望测试这些文件是否具有特定的设置

cat abc.net
string home
More data
将输入文件设置为“工作测试”

然后将输入设置为home

如果每个文件只有一次命中,您可以将其缩短一些并删除循环

cat test
#!/bin/bash
svr=(abc.net def.net)
awk -vI=$(cat input) '/string/ {if ($2~I) print FILENAME,"OK"}' ${svr[*]}

你能试着更清楚地解释一下你想做什么吗?目前我一点也不清楚。这里我需要使用awk打印声明为变量的值。为了更简洁,我需要在awk语句中打印$svr值..应该是abc.net OK def.net吗?在您看来,如果$1==string,那么/string/before对您有什么作用?换句话说,如果$1等于string,那么在什么情况下您认为/string/条件为false?我有上面的input.txt。/string/将搜索单词string的行并打印$1No,这是完全不清楚的。请编辑您的问题,以澄清并提供真正具有代表性的样本输入和预期输出。例如,到目前为止,您的问题中没有任何内容显示您需要生成任何表示$svr在txt文件中没有字符串的输出。这不是理想的解决方案,因为这样做而不是将svr列表传递给awk并解析input.txt是没有意义的once@EdMorton我知道,只是演示如何将变量从svr输入到awk。OP需要更清楚地了解他喜欢测试什么。我怀疑OP可能不明白这就是你在这里试图做的,并且认为这实际上是你对他的整体问题提出的解决方案,不管是什么。
cat abc.net
string home
More data
cat def.net
string work
more data
cat test
#!/bin/bash
svr=(abc.net def.net)
for n in ${svr[*]}; do
   awk -vI=$(cat input) '/string/ {if ($2~I) f=1} END {if (f) print FILENAME,"OK"}' "$n"
done
cat input
work
./test
def.net OK
cat input
home
./test
abc.net OK
cat test
#!/bin/bash
svr=(abc.net def.net)
awk -vI=$(cat input) '/string/ {if ($2~I) print FILENAME,"OK"}' ${svr[*]}