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

sudo apt-get install sphinxsearch

Пакеты Ubuntu: поиск Sphinx (Lucid)

1
задан 7 March 2017 в 08:05

2 ответа

Вам не нужны несколько команд 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
ответ дан 23 May 2018 в 00:52
  • 1
    поэтому на выходе запятые отбрасываются, как я могу поддерживать их в awk -F ", " '$ 9 & gt; 100 & amp; & amp; $ 9 & lt; 1000 & amp; & amp; $ 11 = "Ложно" ? – Mona Jalal 8 March 2017 в 02:14
  • 2
    @MonaJalal разделитель выходного поля называется OFS, поэтому, если вы хотите разделять запятую, вы должны установить OFS="," либо внутри выражения, либо в командной строке. Как я упоминал выше, вы должны использовать $11 == "False" не $11 = "False", если вы хотите сделать его условным на значение $11. – steeldriver 8 March 2017 в 02:52

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

$ 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
ответ дан 23 May 2018 в 00:52

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

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