使用Awk查找模式后面的单词

使用Awk查找模式后面的单词,awk,grep,find,Awk,Grep,Find,我已经执行了下面的命令,并将数据存储在sample.txt文件中 chkconfig --list | grep postfix > sample.txt 现在,此文件包含以下输出: postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off 现在我需要提取2:之后的字符串。输出应为on 如果临时文件的唯一目的是提取,则使用awk或grep找到它的方法是否是awk绕过临时文件创建的一种方法: chkconf

我已经执行了下面的命令,并将数据存储在sample.txt文件中

chkconfig --list | grep postfix > sample.txt
现在,此文件包含以下输出:

postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
现在我需要提取
2:
之后的字符串。输出应为
on


如果临时文件的唯一目的是提取,则使用
awk
grep
找到它的方法是否是
awk
绕过临时文件创建的一种方法:

chkconfig --list | awk '/postfix/{$0=substr($4,3)}1'
awk可以做到这一点:

 awk -F '[: ]+' '{print $7}'
你也不需要grep。以下awk将完成此工作:

chkconfig --list | awk -F '[: ]+' '$1 == "postfix" {print $7}'

试试
…| grep-Po'(?@Kent也会匹配
22:
,可能
2
前面的空格或任何非数字字符就足够了。谢谢你的评论。谢谢你的快速回复。但我仍然无法得到结果。我的要求是,我在“sample.txt”文件中有输出。我想grep“2:”的状态,即“on”上面的AWK命令会给你< <代码> > <代码>作为输出,这是在代码> 2:。你没有得到相同的输出吗?解决方案在技术上是正确的。也许考虑分为两个步骤。这里有一个基于相同主题的轻微变化:<代码> CHKCONFIG-列表“AWK”/^后缀[[空间:] ]。/{print$4}'| cut-f1-d':'
Dilip:如果您需要从特定的中间文件中提取结果,只需使用cat进行提取。如果预筛选(如您的示例),您还可以跳过
$1==“postfix”
部分。即最终解决方案应该是
cat sample.txt | awk-F'[:]+'{print$7}