У меня есть awk-скрипт, и я хочу распечатать случайные записи

Это очень плохая идея запускать все как root, потому что если я скажу вам rm -rf /запускать как root, это удалит всю вашу операционную систему, а без root она выйдет из строя. Смысл наличия sudo в том, чтобы позволить вам повышать привилегии только при необходимости. Это сделано для того, чтобы вредоносные скрипты не имели root-права в момент их запуска или ошибки в запущенной вами программе, которая позволила бы кому-то получить права доступа программы (root ).

2
03.01.2021, 00:05
2 ответа
#!/usr/bin/env bash

out='filtered_data.csv'
awk -F, '$4 > ARG1 && $8 == ARG2 && $20 > ARG3' "$@" > "$out" &&
cut -d, -f2 "$out" | shuf -n20

но, опять же, выбирайте осмысленные имена переменных, а не ARG1 и т. д.

3
18.03.2021, 22:38

РЕДАКТИРОВАТЬ:Я разместил это перед ответом Эда Мортона, что явно лучше.

Я оставлю его здесь на случай, если он может быть полезен кому-то еще.


Хорошо, на самом деле это было довольно просто... Отвечу сам себе, вдруг кому надо! Рабочий скрипт работает как надо:

#! /usr/bin/awk -f

# Define FS
BEGIN {FS=OFS = ","}

$4 > ARG1 && $8 == ARG2 && $20 > ARG3 { print  > "filtered_data.csv" ; print $2 | "shuf -n20"}

Только нужно трубу "шуф -н20" с печатью:)

1
18.03.2021, 22:38

Теги

Похожие вопросы