如何在awk中匹配字符串中的字符?

时间:2019-08-13 02:32:18

标签: awk

我有一个字符串,即。昨天。

我想匹配昨天中段的st,但我不想匹配快速(结尾处的st)或强(前面的st)。

我怎么用awk做到这一点?

这是我尝试编写的代码,但不起作用

if ($1 ~/!^st.*st.*!st$/)

2 个答案:

答案 0 :(得分:2)

请您尝试以下。

awk '!/^st|st$/ && /.*st.*/'  Input_file

答案 1 :(得分:1)

我会使用单词边界。

awk '!/\<st|st\>/ && /\<.+st.+\>/' file

然后,仅当行中没有以st开头或结尾的单词时,才打印该行。并使用+代替*,以确保st前后至少有一个字符

如果您想匹配单词中带有st的单词,但也可以像st一样将fastest放在开头,则应该这样做:

awk '/\<.+st.+\>/' file