このような文字列があるとします
ここにいくつかのランダムな単語 25 ミリ秒
25 を抽出して、別のテキスト ファイルに入れたいと考えています。どうすればいいですか?
基本的に、各行には最初にいくつかの単語があり、最後に浮動小数点数があり、その後にmsが続きます。25 は例として挙げただけです。
awk
最後から 2 番目のフィールドのみを印刷することにより、次のようになります。
$ awk '{print $(NF-1)}' <<< "Some random words here 25 ms"
25
grep
肯定的な先読みで:
grep -Po "[0-9.]+(?= ms)" <<< "Some random words here 25 ms"
25
25はどこに行くべきですか?質問を終えましたか?
質問の現在のバージョンに基づいています。したがって、25はランダムではありません。ただ
echo "25" > another.file
25が乱数の場合、常にその行の終わりにあります。
grep -oE '[0-9]+$' <<<" Some random words here 25" > another.file
編集
grep -Po '\d+(?= ms)' <<<"Some random words here 25 ms" > another.file
sed 's/[^0-9. ]*//g' input.txt > output.txt
最後に ms がない行がある場合は、これも行うことができます
awk '$NF ~ /ms/{print $(NF-1)}' temp.txt
最後のフィールドがms
の直前に、数字のみで構成される最後の単語 (オプションで小数点以下の桁数を含めることもできます) をスキャンしますms
。
sed 's/.* \([0-9.]*\) ms$/\1/' input.txt > output.txt