awk +一行awk语法只在第二个字段打印一次,如果"true"字匹配

lid*_*dia 4 awk

我不知道怎么用awk做这个但是我的目标是创建awk一行语法,以便打印第二个字段($ 2)如果所有第一个字段($ 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
Run Code Online (Sandbox Code Playgroud)

awk将只打印以下内容:

 I_am_very_tall
 my_ball_is_fine
Run Code Online (Sandbox Code Playgroud)

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

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

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

利迪娅

Pau*_*ce. 7

这是一种方式:

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
Run Code Online (Sandbox Code Playgroud)

编辑:

这是多行:

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
Run Code Online (Sandbox Code Playgroud)