Это очень плохая идея запускать все как root, потому что если я скажу вам rm -rf /
запускать как root, это удалит всю вашу операционную систему, а без root она выйдет из строя. Смысл наличия sudo в том, чтобы позволить вам повышать привилегии только при необходимости. Это сделано для того, чтобы вредоносные скрипты не имели root-права в момент их запуска или ошибки в запущенной вами программе, которая позволила бы кому-то получить права доступа программы (root ).
#!/usr/bin/env bash
out='filtered_data.csv'
awk -F, '$4 > ARG1 && $8 == ARG2 && $20 > ARG3' "$@" > "$out" &&
cut -d, -f2 "$out" | shuf -n20
но, опять же, выбирайте осмысленные имена переменных, а не ARG1 и т. д.
РЕДАКТИРОВАТЬ:Я разместил это перед ответом Эда Мортона, что явно лучше.
Я оставлю его здесь на случай, если он может быть полезен кому-то еще.
Хорошо, на самом деле это было довольно просто... Отвечу сам себе, вдруг кому надо! Рабочий скрипт работает как надо:
#! /usr/bin/awk -f
# Define FS
BEGIN {FS=OFS = ","}
$4 > ARG1 && $8 == ARG2 && $20 > ARG3 { print > "filtered_data.csv" ; print $2 | "shuf -n20"}
Только нужно трубу "шуф -н20" с печатью:)