如何使用grep,sed和awk在找到的模式后打印下一个单词?

时间:2018-02-04 09:58:59

标签: linux bash awk sed grep

例如,

假设我有包含的logfile.txt "这是一个示例文本文件"

我的模式是"样本"如何在logfile.txt中获取示例旁边的单词。

1 个答案:

答案 0 :(得分:9)

以下是使用awk执行此操作的一种方法:

$ awk '{for(i=1;i<=NF;i++)if($i=="sample")print $(i+1)}' file
text

说明:

$ awk '{
    for(i=1;i<=NF;i++)        # process every word
        if($i=="sample")      # if word is sample
            print $(i+1)      # print the next
}' file

和sed:

$ sed -n 's/.* sample \([^ ]*\).*/\1/p' file
text

即。 sample下一个空格分隔后的字符串

和grep使用PCRE并积极看待背后:

$ grep -oP '(?<=sample )[^ ]*' file
text

见前面的解释。