Bash 匹配多个字符串,如果两个字符串在同一行上,则打印-awk
如果我想找到defstring3,这个很好用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
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
不是您想象的那样。它没有变量的值,而是变量名。谢谢!我不知道为什么我没有尝试&&。哈哈!非常感谢。我不知道为什么我没有尝试&&。哈哈!谢谢你的帮助。