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_cnt
和100
之间存在单个空格字符,则可以使用前瞻和后向断言
grep -oP '(?<=--pe_cnt\s)\d+(?=\s+--rd_cnt)'