$ 1に一致するすべての単語をオンラインで印刷し、他の単語を印刷しない方法は何ですか?

$ 1に一致するすべての単語をオンラインで印刷し、他の単語を印刷しない方法は何ですか?

入力は次のとおりです。

user1 : MPT_group1
user2 : MPT_group1 MPT_group3  MPT_group4 groupx groupy
user3 : MPT_group2 MPT_group3 groupn 

私は戻りたいです:

user1 : MPT_group1
user2 : MPT_group1 MPT_group3 MPT_group4
user3 : MPT_group2 MPT_group3

ありがとうございます。

ベストアンサー1

解決策awk

$ awk '{printf "%s : ", $1; for( i=3; i<=NF; i++ ) { if( $i ~ /^MPT_group/ ) { printf "%s ", $i }  } print "" }' input
user1 : MPT_group1
user2 : MPT_group1 MPT_group3 MPT_group4
user3 : MPT_group2 MPT_group3

読みやすくするために、デフォルトのawkスクリプト部分は次のとおりです。

{
   printf "%s : ", $1; 
   for( i=3; i<=NF; i++ ) { 
      if( $i ~ /^MPT_group/ ) { 
         printf "%s ", $i }
      } 
   print ""
}

おすすめ記事