awk 查找有两个匹配项的行

awk 查找有两个匹配项的行

文件包含

Today is 1 nice day
This is a perfect day
Tomorrow is 1/2 cool 1/2 hot day
What is Toy Story
Tonight is a dark night

如何查找
以“To”开头并
以“day”结尾的行

这些命令都不起作用

awk '/^To[*]day$/ {print}' file

awk '/^To*day$/   {print}' file

awk '/^To.day$/   {print}' file

awk '/^To[.]day$/ {print}' file

谢谢!

答案1

在正则表达式中,.匹配任何字符,并且*是附加到要说的话的限定符0个或更多那个东西。任何.*数量(0或更多)的人物

所以,就像安吉洛说的,你可以这样做:

awk '/^To.*day$/'

记录开头 ( ^) 后跟To任意数量的字符 ( .*) ,然后day是记录结尾 ( $)。

或者,你可以这样写:

awk '/^To/ && /day$/'

这也将匹配介于之间Today包含非字符的记录。另一个区别是当您将To/替换dayabc/时cde,它会匹配abcde

答案2

awk '$0 ~ /^To.*day$/  {print}' file

要不就

awk '/^To.*day$/  {print}' file

甚至(因为默认操作是打印记录):

awk '/^To.*day$/' file

相关内容