Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Bash 匹配多个字符串,如果两个字符串在同一行上,则打印-awk_Bash_Awk - Fatal编程技术网

Bash 匹配多个字符串,如果两个字符串在同一行上,则打印-awk

Bash 匹配多个字符串,如果两个字符串在同一行上,则打印-awk,bash,awk,Bash,Awk,如果我想找到defstring3,这个很好用 defstring1=name defstring2=surname defstring3="defstring1 defstring2" echo "name surname is:" $(awk -v string="$defstring3" '$0~string' namelist) >> result 但是我想消除defstring3并使用defstring1和defstring2。因此,如果defstring1和defstri

如果我想找到defstring3,这个很好用

defstring1=name
defstring2=surname
defstring3="defstring1 defstring2"
echo "name surname is:" $(awk -v string="$defstring3" '$0~string' namelist) >> result
但是我想消除defstring3并使用defstring1和defstring2。因此,如果defstring1和defstring2位于同一行,我希望代码搜索整个名称列表文本文件并打印出来。我一直在试,但找不到。像这样的

echo "name surname is:" $(awk -v string1 ="$defstring1" string2="defstring2" '$0~string1~string2' namelist) >> result
这个怎么样

echo "name surname is:" $(awk -v string1="defstring1" string2="defstring2" '$0~string1 && $0~string2' namelist) >> result
在我的测试中:

$ cat foo.txt
foo
bar
foobar
$ awk -v string1="foo" -v string2="bar" '$0~string1 && $0~string2' foo.txt
foobar
这个怎么样

echo "name surname is:" $(awk -v string1="defstring1" string2="defstring2" '$0~string1 && $0~string2' namelist) >> result
在我的测试中:

$ cat foo.txt
foo
bar
foobar
$ awk -v string1="foo" -v string2="bar" '$0~string1 && $0~string2' foo.txt
foobar

目前,您正在测试一个更强的条件“x y”。现在你想要“x”和“y”。语法是:

$ awk -v x="$value1" -v y="$value2" '$0~x && $0~y'
如果您想要当前行为的精确副本

$ awk -v x="$value1" -v y="$value2" '$0~x" "y'

目前,您正在测试一个更强的条件“x y”。现在你想要“x”和“y”。语法是:

$ awk -v x="$value1" -v y="$value2" '$0~x && $0~y'
如果您想要当前行为的精确副本

$ awk -v x="$value1" -v y="$value2" '$0~x" "y'

请注意,您的
defstring3
并不是您想象的那样。它没有变量的值,而是变量名。请注意,您的
defstring3
不是您想象的那样。它没有变量的值,而是变量名。谢谢!我不知道为什么我没有尝试&&。哈哈!非常感谢。我不知道为什么我没有尝试&&。哈哈!谢谢你的帮助。