linux - 了解标准输入、标准错误、标准输出
问题描述
我想编写一个脚本,它将:
- 在标准输入上读取文本流
- 在 stderr 上每隔 10 行打印一次
- 在标准输出上打印随机*行
我试过了
#!/bin/bash
count=0
while IFS= read -r line; do
awk '{if(NR%3==0) print $line}' >&2
awk '{if(( RANDOM % 2 )) print $line}' >&1
done
但是,RANDOM 不起作用。这里有什么问题?如何解决这个问题?
解决方案
在使用 RANDOM bash 变量值之前,您必须将其赋值为 awk 变量。随机线必须是这样的:
awk -v random="$RANDOM" -v aline="$line" 'BEGIN {if(random % 2) print aline}' >&1
推荐阅读
- ejabberd - 要加入一个房间,需要在存在节中发送什么?我从属性中收到了许多没有昵称的存在节
- java - 如何在我的 Android 应用中添加某人的网站链接?
- r - 如何遍历r中的分类变量
- python - Python Asyncio 任务从不同的事件循环中取消
- javascript - UWP Javascript App - 多显示器时如何使用触摸键盘
- c# - ASP.NET Core 路由前缀
- c++ - 在 QTableView 上安装事件过滤器以防止委托关闭
- r - 如何使用每个组的顶点列表和 R 的边列表绘制重叠聚类?
- postgresql - PostgreSQL 中的共享缓冲区空间是否缓存索引查询?
- javascript - 滚动时具有固定位置的响应式导航栏