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)
我怎样才能做到这一点?
尝试awk:
awk '/results/ {print $1,$4}'
Run Code Online (Sandbox Code Playgroud)
或者
awk '$2=="results"{print $1,$4}'
Run Code Online (Sandbox Code Playgroud)
另一个解决方案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)
如果要使用cut,则需要使用以下选项设置分隔符-d:
$ cut -d' ' -f1,4 file
ExperimentOne .5
ExperimentTwo .4
Run Code Online (Sandbox Code Playgroud)