linux - 了解标准输入、标准错误、标准输出

标签 linux bash

我想编写一个脚本来:

  • 读取标准输入上的文本流
  • 在 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

关于linux - 了解标准输入、标准错误、标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60296371/

相关文章:

linux - 在 tcsh 中的每个 cd 命令后自动执行 ls 命令

linux - 抓屏.py Python win32api

bash - 如何对出现次数超过X次的行进行排序、uniq和显示

regex - sed 打印后 sed 替代品不起作用

linux - 了解 cpu 寄存器

linux - 我需要构建什么才能直接访问 InfiniBand HCA 端口并注入(inject) IPoIB 帧位?

c++ - 在 Linux 中获取自纪元以来的秒数

bash - CMP 如何将比较值传递到 bash 脚本中的下一行?

linux - 调用变量运行脚本

linux - 编写一个 shell 脚本来搜索文件中的复杂字符串以及它的出现次数