如何从文本文件BASH中获取单词

时间:2015-04-19 22:39:03

标签: bash

我想从这个txt文件中只得到一个字:http://pastebin.com/jFDu0Le5。这个词来自最后一行:WER: 45.67% Correct: 65.87% Acc: 54.33% 我想只获取值45.67将其保存到文件value.txt。我想创建BASH脚本来获取此值。你能举个例子怎么做吗???我是Bash的新手,我需要上学。整个.txt文件以文本文件file.txt保存在我的服务器上。

4 个答案:

答案 0 :(得分:0)

你想要grep" WER:" value.txt |切 - ???

我有???因为我不知道文件的结构。制表符分隔?固定宽度?

男人会削减你可以得到你需要的论据。

答案 1 :(得分:0)

试试这个:

grep WER file.txt | awk '{print $2}' | uniq | sed -e 's/%//' > value.txt

请注意,每次运行命令时都会覆盖value.txt。

答案 2 :(得分:0)

如果格式如您所说,那么这也有效

awk -F'[: %]' '/^WER/{print $3}' file.txt > value.txt

说明

  • -F将字段分隔符指定为[: %]
  • 之一
  • /<PATTERN>/ {<ACTION>}指的是:如果一行与某些PATTERN匹配,则执行一些ACTION
  • 在我的情况下,
    • PATTERN是:以^字符串WER
    • 开头
    • 行动是:print字段$3(由-F字段分隔符拆分)
  • >将输出发送到value.txt

答案 3 :(得分:0)

有很多方法和工具可以完成这项任务:

SED

tac file.txt | sed -n '/^WER: /{s///;s/%.*//;p;q}' > value.txt

AWK

tac file.txt | awk -F'[ %]' '/^WER:/{print $2;exit}' > value.txt

的bash

while read a b c
do
    if [ $a = "WER:" ]
    then
        b=${b%\%*}
        echo ${b#* }
        break
    fi
done < <(tac file.txt) > value.txt