舍入数字并将它们分成 2 列
Round numbers and divide them to 2 columns
现在看起来像:
xmin = 0
xmax = 15.393970521541949
xmin = 15.393970521541949
xmax = 27.58997052154195
xmin = 27.58997052154195
xmax = 46.05797052154195
xmin = 46.05797052154195
xmax = 65.67797052154194
xmin = 65.67797052154194
xmax = 81.08048969617173
xmin = 81.08048969617173
xmax = 82.7959410430839
它应该看起来像:
0 15.39
15.39 27.59
27.59 46.06
46.06 65.68
.
.
.
您好,我有 .txt 文件,我从中仅过滤了这个 xmin、xmax 数字,命令为:
sed -n '16,$p' info.txt | grep "xmin\|xmax"
我知道如何只显示数字,但我不知道如何将这些数字四舍五入并将它们分成两列。结果应该类似于示例。
awk 可以轻松做到:
awk '{printf "%.2f%s",,!(NR%2)?"\n":FS}' file
以你的例子:
kent$ cat f
xmin = 0
xmax = 15.393970521541949
xmin = 15.393970521541949
xmax = 27.58997052154195
xmin = 27.58997052154195
xmax = 46.05797052154195
xmin = 46.05797052154195
xmax = 65.67797052154194
xmin = 65.67797052154194
xmax = 81.08048969617173
xmin = 81.08048969617173
xmax = 82.7959410430839
kent$ awk '{printf "%.2f%s",,!(NR%2)?"\n":FS}' f
0.00 15.39
15.39 27.59
27.59 46.06
46.06 65.68
65.68 81.08
81.08 82.80
awk '{printf("%.2f ", $NF)} !(NR%2){printf("\n")}' File
在带有格式说明符 (%.2f
) 的每一行中打印最后一个字段 ($NF
)。在每 second
行之后打印 newline
。
my $mi,$ma;
while (<>) {
if (/xmin = ([0-9.]*)/) { $mi=sprintf("%.2f", ); next; };
if (/xmax = ([0-9.]*)/) { $ma=sprintf("%.2f", ); printf "$mi $ma\n" };
}
运行 这个 perl 脚本有:
script.pl < data
会导致
0.00 15.39
15.39 27.59
27.59 46.06
46.06 65.68
65.68 81.08
81.08 82.80
sed 'N;s/xm.. = //g;s/\([0-9]*\.[0-9]\{2\}\)[0-9]*//g;y/\n/ /' info.txt
- 阅读 2 行
- 删除
xman/xmin =
- 删号
- 将新行更改为 space
- 周期
(POSIX GNU sed 版本 --posix
)
现在看起来像:
xmin = 0
xmax = 15.393970521541949
xmin = 15.393970521541949
xmax = 27.58997052154195
xmin = 27.58997052154195
xmax = 46.05797052154195
xmin = 46.05797052154195
xmax = 65.67797052154194
xmin = 65.67797052154194
xmax = 81.08048969617173
xmin = 81.08048969617173
xmax = 82.7959410430839
它应该看起来像:
0 15.39
15.39 27.59
27.59 46.06
46.06 65.68
.
.
.
您好,我有 .txt 文件,我从中仅过滤了这个 xmin、xmax 数字,命令为:
sed -n '16,$p' info.txt | grep "xmin\|xmax"
我知道如何只显示数字,但我不知道如何将这些数字四舍五入并将它们分成两列。结果应该类似于示例。
awk 可以轻松做到:
awk '{printf "%.2f%s",,!(NR%2)?"\n":FS}' file
以你的例子:
kent$ cat f
xmin = 0
xmax = 15.393970521541949
xmin = 15.393970521541949
xmax = 27.58997052154195
xmin = 27.58997052154195
xmax = 46.05797052154195
xmin = 46.05797052154195
xmax = 65.67797052154194
xmin = 65.67797052154194
xmax = 81.08048969617173
xmin = 81.08048969617173
xmax = 82.7959410430839
kent$ awk '{printf "%.2f%s",,!(NR%2)?"\n":FS}' f
0.00 15.39
15.39 27.59
27.59 46.06
46.06 65.68
65.68 81.08
81.08 82.80
awk '{printf("%.2f ", $NF)} !(NR%2){printf("\n")}' File
在带有格式说明符 (%.2f
) 的每一行中打印最后一个字段 ($NF
)。在每 second
行之后打印 newline
。
my $mi,$ma;
while (<>) {
if (/xmin = ([0-9.]*)/) { $mi=sprintf("%.2f", ); next; };
if (/xmax = ([0-9.]*)/) { $ma=sprintf("%.2f", ); printf "$mi $ma\n" };
}
运行 这个 perl 脚本有:
script.pl < data
会导致
0.00 15.39 15.39 27.59 27.59 46.06 46.06 65.68 65.68 81.08 81.08 82.80
sed 'N;s/xm.. = //g;s/\([0-9]*\.[0-9]\{2\}\)[0-9]*//g;y/\n/ /' info.txt
- 阅读 2 行
- 删除
xman/xmin =
- 删号
- 将新行更改为 space
- 周期
(POSIX GNU sed 版本 --posix
)