Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 比较两个字符串变量的AWK_String_Bash_Awk - Fatal编程技术网

String 比较两个字符串变量的AWK

String 比较两个字符串变量的AWK,string,bash,awk,String,Bash,Awk,我想在脚本的开头获得一个用户输入(作为参数),然后使用awk将其与字符串进行比较! 我使用-v将变量添加到awk命令中(通过输入字符串的方式) 但由于某些原因,它不会显示预期的输出! 我知道问题出在我插入awk命令的变量上,因为如果我把我想找到的字符串,我知道的具体字符串放在文件中,它会找到它并打印出我想要的结果。 我会给你看代码 awk -v x=$a -F '[:,]' ' { if ($1 == $a ) print $5 }' /etc/passwd 我也尝试过: awk -v

我想在脚本的开头获得一个用户输入(作为参数),然后使用awk将其与字符串进行比较! 我使用-v将变量添加到awk命令中(通过输入字符串的方式) 但由于某些原因,它不会显示预期的输出! 我知道问题出在我插入awk命令的变量上,因为如果我把我想找到的字符串,我知道的具体字符串放在文件中,它会找到它并打印出我想要的结果。 我会给你看代码

awk -v x=$a -F '[:,]' ' { if ($1 == $a )  print $5 }' /etc/passwd 

我也尝试过:

awk -v x="$a" -F '[:,]' ' { if ($1 == "$a" )  print "$5" }' /etc/passwd

但什么都没有。我找不到解决办法。 这里需要澄清。我已经做了正确的分离,我知道该文件包括什么

这里是一个没有变量的示例

awk -v x=$a -F '[:,]' ' { if ($1 == "psz" )  print $5 }' /etc/passwd

psz是我在a变量(a=“psz”)处的awk命令之前设置的字符串,如下所示。
我知道的是在第一个字段的/etc/passwd中($1)

您应该使用以下选项代替此选项:

awk -v x=$a -F '[:,]' ' { if ($1 == $a )  print $5 }' /etc/passwd 
这:


您将
x
定义为一个变量,这应该在
awk

中使用。现在请通过您的线程中提到的链接,您只需修复如何在
awk
中调用shell变量的过程,然后您就应该很好了。谢谢,我很笨lol@Psz_13,不,你不是。可能发生在任何人身上:)
awk -v x=$a -F '[:,]' ' { if ($1 == x )  print $5 }' /etc/passwd