захват определенных столбцов csv

Можно ли помочь исправить этот сценарий?

$ 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}'

Я хочу получить строки, в которых 9-й столбец> min_num_followers и <max_num_followers, и также 11-й столбец является частным. enter image description here

** Я не склоняюсь к использованию awk так или иначе

-1
задан 6 March 2017 в 21:05

3 ответа

Что-то как awk -F, '$9 > 500 && $9 < 1000 && $11 == "True"' должно работать

1
ответ дан 3 November 2019 в 16:14

Вам не нужно несколько команд awk - вы можете связать логические условия с помощью && (или ||, если этого требует логика).

Также вам необходимо заменить $11=private (назначение) на $11==private (логический тест). Так что-то вроде этого должно работать:

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

Если вы хотите, чтобы вывод был разделен запятыми, установите OFS = "," либо в теле выражения awk, либо в командной строке, например,

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
2
ответ дан 3 November 2019 в 16:14

Просто подтвердив, что эти два оба работали:

$ 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
0
ответ дан 3 November 2019 в 16:14

Другие вопросы по тегам:

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