によって置き換えると掛け、部分文字列を検索する:私はそのような内容のファイルを持っている1024
03:14.27,"31K"
03:13.59,"50M"
04:11.51,"435K"
質問はバイト単位で番号を取得し、私も(得ることができるように古い値を置換する方法であります引用符を取り除くと便利です):
03:14.27,"31744"
......
よく使うものは? grepまたはawk? ありがとう!
によって置き換えると掛け、部分文字列を検索する:私はそのような内容のファイルを持っている1024
03:14.27,"31K"
03:13.59,"50M"
04:11.51,"435K"
質問はバイト単位で番号を取得し、私も(得ることができるように古い値を置換する方法であります引用符を取り除くと便利です):
03:14.27,"31744"
......
よく使うものは? grepまたはawk? ありがとう!
Grepは置き換えを行いません。そのためにはsedが必要です。しかし、sedは数学や条件文を使うことができないので、x1024の完全なK/Mが必要ならawkが必要です。
sed -e s/K/000/ -e s/M/000000/
フル1024
Awkのコードを、あなたはgawkのかswitch
と別のインタプリタを持っている場合:
#!/usr/bin/awk -f
BEGIN { FS = "\""; OFS = "\"" }
{
N = $2+0
if(N == 0) { print; next }
M = substr($2,length($2),1)
switch(M) {
# Add T, P, X, etc. if you need them. Or just for fun.
case "G": N *= 1024
case "M": N *= 1024
case "K": N *= 1024
}
$2 = N
print
}
このフィールドの前に多くの引用符、$NF
への変更$2
の可能性があります場合。 あなたの通訳者にswitch
がない場合は、if
の文を乗算したものを使うか、Kentの答えを使うことができます。私は、"
をセパレータとして使用し、switch
のフォールスルーの適切な使用方法を示したかっただけです。
perl!
[email protected] $ cat t.pl
#!/usr/bin/perl -W
use strict;
my %suffixes = (
"K" => 10,
"M" => 20,
"G" => 30
);
while (my $line = <STDIN>) {
$line =~ s/"(\d+)(\w)"/ '"' . ($1 << $suffixes{$2}) . '"'/ge;
print $line;
}
[email protected] ~ $ cat <<EOF | perl t.pl
> 03:14.27,"31K"
> 03:13.59,"50M"
> 04:11.51,"435K"
> EOF
03:14.27,"31744"
03:13.59,"52428800"
04:11.51,"445440"
(編集:新しい入力)
awkの道:
kent$ cat tt
03:14.27,"31K"
03:13.59,"50M"
04:11.51,"435K"
kent$ awk 'BEGIN{k=1024;m=1024*k;g=1024*m;FS=OFS="\""}
{x=substr($2,1,length($2)-1)*1}
$2~/[Kk]$/{x*=k}
$2~/[mM]$/{x*=m}
$2~/[Gg]$/{x*=g}
{print $1,x"\""}' tt
出力:
あなたの例でawk 'BEGIN{k=1024;m=1024*k;g=1024*m;FS=OFS="\""}
{x=substr($2,1,length($2)-1)*1}
$2~/[Kk]$/{x*=k}
$2~/[mM]$/{x*=m}
$2~/[Gg]$/{x*=g}
{print $1,x"\""} yourFile
テスト
あなたは引用符を使用しない場合:
awk 'BEGIN{k=1024;m=1024*k;g=1024*m;FS="\""}
{x=substr($2,1,length($2)-1)*1}
$2~/[Kk]$/{x*=k}
$2~/[mM]$/{x*=m}
$2~/[Gg]$/{x*=g}
{print $1,x} yourFile
編集が各引用された値の後に '\のN 'を示しています。それが実際のファイルの仕組みですか、それとも編集上の前提ですか? –
@JonathanMコードには '\ n'があります。私は単に編集時にそれを見えるようにしました。元のソースを見るhttp://stackoverflow.com/revisions/62bc4eba-9597-4981-a71e-af32e239a732/view-source –
@BookOfZeus、ありがとう。 –