Algo como awk -F, '$9 > 500 && $9 < 1000 && $11 == "True"'
deve funcionar
Você pode ajudar a corrigir esse script?
$ private=False
$ min_num_followers=100
$ max_num_followers=1000
$ awk -v private="$private" '$11=private' ExportData_followers_memoryweaver_37677682_10.csv | awk -v min_num_followers="$min_num_followers" '$9 > min_num_followers'| awk -v max_num_followers="$max_num_followers" '$9 < max_num_followers' |awk -F"," '{x+=$8} END {print x}'
Eu quero pegar as linhas nas quais a 9ª coluna é > min_num_followers e < max_num_followers e também 11th column são privados.
** Eu não sou inclinado a usar o awk de qualquer maneira
Algo como awk -F, '$9 > 500 && $9 < 1000 && $11 == "True"'
deve funcionar
Você não precisa de vários comandos awk
- você pode encadear as condições lógicas com &&
(ou ||
se a lógica exigir).
Além disso, você precisa substituir $11=private
(atribuição) por $11==private
(teste lógico). Então, algo assim deveria funcionar:
awk -F"," -v private="$private" -v min_num_followers="$min_num_followers" -v max_num_followers="$max_num_followers" '
$11==private && $9 > min_num_followers && $9 < max_num_followers
' ExportData_followers_memoryweaver_37677682_10.csv
Se você deseja que a saída seja separada por vírgulas, defina OFS = ","
no corpo da expressão awk
ou na linha de comando, por exemplo.
awk -F"," -v private="$private" -v min_num_followers="$min_num_followers" -v max_num_followers="$max_num_followers" '
$11==private && $9 > min_num_followers && $9 < max_num_followers
' OFS="," ExportData_followers_memoryweaver_37677682_10.csv
Confirmando que os dois funcionaram:
$ awk -F"," '$9 > 100 && $9 < 1000 && $11 == "False"' ExportData_followers_reddit_1702003595_10.csv | wc -l
1089
$ gawk -F"," '$9 > 100 && $9 < 1000 && $11 == "False"' ExportData_followers_reddit_1702003595_10.csv | wc -l
1089