loops - 如何在单独的文件中显示来自 awk rand() 循环的每个结果?
问题描述
我正在尝试使用 awk 生成几个带有随机列的文件。然后将每两个粘贴到一个包含两列的文件中。这将是另一个程序的输入。我面临的问题是我只在一个文件中获得最后一次迭代。我正在使用的代码是:
awk 'BEGIN {
srand();
total=5;
max1=10;
count=0;
while(count < total) {
rnd1 = int(rand() * max1);
if ( array[rnd1] == 0 ) {
count++;
array[rnd1]++;
}
}
for ( i=0; i<=200; i++) {
if ( array[i] )
print i;
}
}' > out1
awk 'BEGIN {
srand();
total=5;
max2=20;
count=0;
while(count < total) {
rnd2 = int(rand() * max2);
if ( array[rnd2] == 0 ) {
count++;
array[rnd2]++;
}
}
for ( j=0; j<=max2; j++) {
if ( array[j] )
print j;
}
}' > out2
paste out1 out2 | awk '{ print " "$1".0" , $2".0"; }' > out3
有没有更好的方法将所有迭代放在单独的文件中?
我得到的输出是:
1.0 2.0
3.0 7.0
4.0 9.0
6.0 12.0
9.0 13.0
这很好,但它在一个文件“out3”中,我想获取所有迭代文件“out(i)”文件。
解决方案
使用重定向到文件>
将删除文件的内容。改为使用>>
,并按照文档获取更多帮助。
打印项目>>输出文件
此重定向将项目打印到名为 output-file 的预先存在的输出文件中。这个和单-'>'的区别 重定向是输出文件的旧内容(如果有)不会被删除。而是将 awk 输出附加到文件中。如果输出文件不存在,则创建它。
例如:
for ( i=0; i<=200; i++) {
if ( array[i] )
print i;
}
}' > out1
将out1
在每次迭代时擦除 的内容。只有最后一次迭代将被实际保存out1
而不会被覆盖。
推荐阅读
- c# - JsonConvert 在 Newtonsoft.Json Asp.net MVC C# 中不起作用
- qemu - 在 xv6 RISC-V 中添加第二个 virtio-blk-device
- javascript - 试图在 React Native 中存储 FireStore 数组?
- hyperlink - 超链接到当前文件夹中的文件,无论其在驱动器上的位置如何
- json - 有什么方法可以操纵 CORS api http 请求(正文)以获取所需的响应
- flutter - Flutter 应用程序中等待 http 响应后的行不执行
- google-sheets - vlookup 一个值,如果它在某个日期之后返回
- tcp - 我们是否根据情况切换拥塞控制协议?
- reactjs - Socket.io 客户端未与服务器 React 和 Express 连接
- javascript - 如果按钮单击 3 次,则执行操作 [javascript]