【发布时间】:2014-12-12 10:39:19
【问题描述】:
我修改了很多文件(过滤后),我需要将新文件的 NR 和字符打印到列中 - 让我们看看示例:
input files: x1, x2, x3, y1, y2, y3, z1, z2, z3 ...
脚本:
for i in x* y* z*
do awk -v h=$i 'END{c+=lenght+1 ;print h "\t" NR "\t" c}' >> stats.txt
done;
我的输出如下:
x1 NR c
x2 NR c
x3 NR c
y1 NR c
y2 NR c
y3 NR c
z1 NR c
z2 NR c
z3 NR c
而且我需要将每个循环保存到新列没有行:
x1 NR c y1 NR c z1 NR c
x2 NR c y2 NR c z2 NR c
x3 NR c y3 NR c z3 NR c
将相应的文件(过滤后)保持在同一行。我希望我很清楚。我需要在 BASH 和 awk 中执行此操作。谢谢你的帮助!!
已编辑:
实际输出如下:
x 0.457143 872484
y 0.527778 445759
z 0.416667 382712
x 0.457143 502528
y 0.5 575972
z 0.444444 590294
x 0.371429 463939
y 0.694444 398033
z 0.56565 656565
.
.
.
我需要:
x 0.457143 872484 0.457143 502528 0.371429 463939
y 0.52777 445759 0.5 575972 0.694444 398033
.
.
.
我希望清楚..
【问题讨论】:
-
有点不清楚你的意思。文字
NR和c或者它们包含一些值? -
@fedorqui 很抱歉,是的,NR 是文档中的行数,C 是字数 - 经过一些过滤后它正在改变。
-
没问题!请注意,
for i in x* y* z*会将所有x*、y*和z*展开为一个大列表,并且每个循环都会选择其中一项。所以实际上没有这样的循环包含来自x*的一个项目,另一个来自y*和另一个来自z*的项目。 -
发布一些示例输入和您期望从该输入中获得的输出,以便我们为您提供帮助。您的输出中的 x、y 等与 x1、x2 等有什么关系?所有这些小于 1 的数字与您要打印的行数和字符数有什么关系?