Linux:在同一行上的特定单词之后提取一个单词

我是一个新的Linux用户,我是自学的,所以我很抱歉,如果这个问题是愚蠢的。 我在网上search,但无法find一个正确的答案..我怎样才能提取一个字在Linux(csh)的特定单词后? 更确切地说,我有一个文件,其中有一行看起来像这样的文件:

[一些无用的数据] –pe_cnt 100 –rd_cnt 1000 [更多数据]

我想提取–pe_cnt字之后的数字100 。 我不能使用'sed',因为只有当你想要提取整行时才有效。 也许我可以用'awk'?

此外,我有多个文件有不同的值而不是100,所以我需要的东西,提取的价值,但不依赖于价值。

awk

 awk '{for(i=1;i<=NF;i++) if ($i=="--pe_cnt") print $(i+1)}' inputFile 

基本上循环每行的单词。 当你find第一个你正在寻找,抓住下一个字,并打印出来。

grep

 grep -oP "(?<=--pe_cnt )[^ ]+" inputFile 

你可以使用sed。 只需要一组想要匹配的组,并用整个组来replace全行:

 sed -n 's/^.*pe_cnt\s\+\([0-9]\+\).*$/\1/p' file 

如果在--pe_cnt100之间存在单个空格字符,则可以使用前瞻和后向断言

 grep -oP '(?<=--pe_cnt\s)\d+(?=\s+--rd_cnt)'