でそれらを分離:ラインから番号を取得し、私はこのライン持っているbashの
io=9839.1MB, bw=4012.3KB/s, iops=250, runt=2511369msec
をし、私はこのような出力を得るために、数字を抽出する必要があります:私はsed 's/[^0-9.]*//g'
てみました
9839.1 4012.3 250 2511369
を数字は互いに分離されていません。
どうすればいいですか?
でそれらを分離:ラインから番号を取得し、私はこのライン持っているbashの
io=9839.1MB, bw=4012.3KB/s, iops=250, runt=2511369msec
をし、私はこのような出力を得るために、数字を抽出する必要があります:私はsed 's/[^0-9.]*//g'
てみました
9839.1 4012.3 250 2511369
を数字は互いに分離されていません。
どうすればいいですか?
数字、ドット、空白以外のすべてを削除します。
echo 'io=9839.1MB, bw=4012.3KB/s, iops=250, runt=2511369msec' | tr -cd '0-9. '
出力:
9839.1 4012.3 250 2511369
をsed
であなたの試みは、ほぼ正しいと、ちょうど、交換から除外するための単一の空白文字を追加する必要があります
sed 's/[^0-9. ]*//g' file
9839.1 4012.3 250 2511369
GNU grep
は-E
の正規表現構文で、-o
は数字とドットを含む単語のみを照合するためのものです。
grep -o -E '[0-9.]+' file
9839.1
4012.3
250
2511369
魚魚する方法
// a group containing a digit and the literal character "." at least once
const regex = /([\d.]+)/g
// your string
const haystack = `io=9839.1MB, bw=4012.3KB/s, iops=250, runt=2511369msec`
console.log(haystack.match(regex))
:
$ var='io=9839.1MB, bw=4012.3KB/s, iops=250, runt=2511369msec'
$ echo "${var//[![:digit:]. ]}"
9839.1 4012.3 250 2511369
具体的には、これはstring
空とpattern
ため否定ブラケット発現に${parameter//pattern/string}
を使用する:[![:digit:]. ]
–数字、ピリオド、スペース以外のすべて。