如何从bash中的文本文件中提取某些单词和值

cur*_*e99 2 bash

Bash 新手在这里试图通过执行一些简单的任务来掌握一些东西。假设我有一个包含以下文本的文本文件:

ExperimentOne results = .5 participants: 80
ExperimentTwo results = .4 participants: 75, 4 unclear reports
Run Code Online (Sandbox Code Playgroud)

我想提取 ExperimentOne 和 ExperimentTwo 结果数据,或任何在其行中包含单词 results 的数据,以便我的输出很简单:

ExperimentOne .5
ExperimentTwo .4
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

pLu*_*umo 6

尝试awk

awk '/results/ {print $1,$4}'
Run Code Online (Sandbox Code Playgroud)

或者

awk '$2=="results"{print $1,$4}'
Run Code Online (Sandbox Code Playgroud)


Adm*_*Bee 5

另一个解决方案sed

sed -En 's/results *= *([^ ]+).*$/\1/p' filename.txt
Run Code Online (Sandbox Code Playgroud)

如果你想使用grep+cut管道,你必须记住,如果你不指定,则cut假定TAB为字段分隔符。所以,使用

grep "results" filename.txt | cut -d' ' -f1,4
Run Code Online (Sandbox Code Playgroud)


sch*_*ity 5

如果要使用cut,则需要使用以下选项设置分隔符-d

$ cut -d' ' -f1,4 file
ExperimentOne .5
ExperimentTwo .4
Run Code Online (Sandbox Code Playgroud)