linux - 在同一行的特定单词后提取一个单词

标签 linux bash csh

<分区>

如何在 Linux (csh) 中提取特定单词后的单词? 更准确地说,我有一个文件,其中有一行看起来像这样:

<i>[some useless data]</i> --pe_cnt <b>100</b> --rd_cnt 1000 <i>[some more data]</i>

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

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

最佳答案

使用awk:

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

基本上循环遍历该行的每个单词。当您找到您要查找的第一个单词时,捕获下一个单词并打印出来。

使用grep:

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

关于linux - 在同一行的特定单词后提取一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371197/

相关文章:

c - libspotify 和 glibc 版本

linux - 我想限制除 root 之外的所有用户复制、删除和褐变文件,这是可能的

Ruby 到 bash 脚本的翻译

linux - 如何转义 sed 输入文件

c - open() 上的 Hook 导致的段错误

c - TCP connect() 总是通过

regex - sed/awk : replace megabytes with bytes (insert zeros)

linux - 如何在 csh/tcsh 中写一个可以用 shebang 写一个文件的别名?

path - 如何在 sed 中将一个路径替换为另一个路径?

linux - 无法在 .cshrc 中获取脚本源