Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在同一行的特定单词后提取一个单词_Linux_Bash_Csh - Fatal编程技术网

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

Linux 在同一行的特定单词后提取一个单词,linux,bash,csh,Linux,Bash,Csh,在Linux(csh)中,如何提取特定单词后面的单词? 更准确地说,我有一个文件,它只有一行,如下所示: [some useless data] --pe_cnt 100 --rd_cnt 1000 [some more data] [一些无用的数据]-pe\u cnt 100--rd\u cnt 1000[一些更多的数据] 我想提取100这个数字,它位于--pe\u cnt单词之后。 我不能使用sed,因为只有当您想提取整行内容时,sed才起作用。也许我可以用awk 另外,我有多个具有不同值的

在Linux(csh)中,如何提取特定单词后面的单词? 更准确地说,我有一个文件,它只有一行,如下所示:

[some useless data] --pe_cnt 100 --rd_cnt 1000 [some more data]
[一些无用的数据]-pe\u cnt 100--rd\u cnt 1000[一些更多的数据]
我想提取
100
这个数字,它位于
--pe\u cnt
单词之后。 我不能使用sed,因为只有当您想提取整行内容时,sed才起作用。也许我可以用awk


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

您可以使用sed。只需制作一组您想要匹配的内容,并用该组内容替换整行内容:

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

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

如果
--pe_cnt
100
之间有一个空格字符,则可以使用前向和后向断言

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

grep-oP'(?这可能是最短的版本:

grep -oP 'pe_cnt \K[^ ]+' file

“awk”是一种可能性。例如,
echo54 | awk'{print$2}'
应该显示“4”。你需要在grep中的lookback模式末尾添加一个空格。是的,抱歉没有测试它。谢谢!:)注意:Mac OSX 10.8上的
grep
没有
.JS웃: 非常感谢您的快速回复。第一个命令非常有效!第二个命令没有给出任何输出。你的回答对我帮助很大。谢谢,您可能甚至不需要
--rd\u cnt
,以下选项是否合适并不一定重要。谢谢你的提示。我是Linux的新手,所以这些技巧帮助很大。以前的模式中有一个错误,但现在已经修复了。
grep -oP 'pe_cnt \K[^ ]+' file