Понимание стандартного ввода, стандартного вывода, стандартного вывода - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу написать скрипт, который будет:

  • читать поток текста на stdin
  • печатать каждую 10-ю строку на stderr
  • печатать случайную * строку на стандартный вывод

Я пытался

#!/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

Однако, СЛУЧАЙНЫЙ не работает. Что здесь не так? Как это исправить?

1 Ответ

0 голосов
/ 19 февраля 2020

Вы должны присвоить значение переменной RANDOM bash в качестве переменных awk, прежде чем использовать его. Случайная строка должна выглядеть примерно так:

awk -v random="$RANDOM" -v aline="$line" 'BEGIN {if(random % 2) print aline}' >&1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...