过滤具有多个条件的行

过滤具有多个条件的行

我正在尝试从 3.2 GB 的现有 csv 文件生成新的 csv 文件,并,使用分隔符。但是,我得到的输出是 0B csv 文件。

条件是过滤所有lang = ‘en’包含“Corona”或“Covid”一词且verified users = Trueretweet_count大于或等于20的推文

以下是列名称:

     1  status_id
     2  user_id
     3  created_at
     4  screen_name
     5  text
     6  source
     7  reply_to_status_id
     8  reply_to_user_id
     9  reply_to_screen_name
    10  is_quote
    11  is_retweet
    12  favourites_count
    13  retweet_count
    14  country_code
    15  place_full_name
    16  place_type
    17  followers_count
    18  friends_count
    19  account_lang
    20  account_created_at
    21  verified
    22  lang

下面是我尝试过的代码:

grep 'Corona' | 'Covid' > awk -F',' '$22=='en' && $13>=20 && $>21 == True {print,}' > output.csv

任何帮助,将不胜感激。

答案1

假设第 5 列是推文文本,以下awk命令应该有帮助

awk -F',' '$5 ~ /Corona|Covid/ && $22=="en" && $13>=20 && $21=="True"' > output.csv

解释:

  • $5 ~ /Corona|Covid/:检查第 5 列是否包含CoronaOR Covid。用于$5 ~ /[Cc]orona|[Cc]ovid/忽略每个单词中首字母的大小写。
  • 所有其他条件都应该易于理解。
  • 组合布尔测试将计算为0(=false) 或1(=true),并将任何规则或规则之外的规则分别awk解释为“不打印此行”或“打印此行”。01{ ... }

相关内容