加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

awk一行awk语法只打印第二个字段,如果“true”字匹配

发布时间:2020-12-14 00:33:21 所属栏目:Linux 来源:网络整理
导读:我不知道怎么用awk这样做 但我的目标是创建awk单行语法,以便打印第二个字段($2)if 所有第一场($1)都是真的 例如 我有文件: true my_name_is_lenon true my_name_is_lenon true my_name_is_lenon false my_name_is_lenon true my_name_is_lenon false my_dog
我不知道怎么用awk这样做
但我的目标是创建awk单行语法,以便打印第二个字段($2)if
所有第一场($1)都是真的

例如

我有文件:

true my_name_is_lenon
   true my_name_is_lenon
   true my_name_is_lenon
   false my_name_is_lenon
   true my_name_is_lenon

   false my_dog_is_fat
   true my_dog_is_fat
   true my_dog_is_fat

   true I_am_very_tall
   true I_am_very_tall
   true I_am_very_tall

   true my_ball_is_fine
   true my_ball_is_fine

awk将只打印以下内容:

I_am_very_tall
 my_ball_is_fine

因为I_am_very_tall,my_ball_is_fine在第一个字段上变为true而没有false

my_dog_is_fat,my_name_is_lenon未打印,因为第一个字段上的假字

如果第一个字段上没有假字,则规则是打印第二个字段! (在第二场的所有相同句子中)

利迪娅

解决方法

这是一种方式:

awk '{if ($1 == "false") {array[$2] = $1} else if (array[$2] != "false") array[$2] = $1} END {for (i in array) if (array[i] == "true") print i}' inputfile

编辑:

这是多行:

awk '{if ($1 == "false") 
         {array[$2] = $1} 
     else if (array[$2] != "false") 
         array[$2] = $1} 
     END {for (i in array)
             if (array[i] == "true") 
                 print i}
' inputfile

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读