Unixツールを使用して2つの文字列のトークンの違いを見つけるにはどうすればよいですか?

Unixツールを使用して2つの文字列のトークンの違いを見つけるにはどうすればよいですか?

以下のように2つの文字列があります。

token1, token2, token3, token4, token5, token6, token8, token9, token10

token2, token7, token4, token3, token5, token6, token8, token10, token9

token1視覚的に、「表示」が両方の文字列に存在しないことがわかります。token7しかし、Unixツールを使用してさまざまなトークンを取得する簡単な方法はありますか?

長いパスはスクリプトを作成し、{token => count}のハッシュマップを維持し、最終的にcount = 1のキーのみを印刷することです。しかし、もっと短い方法があると思います。

ベストアンサー1

GNUly:

s1='token1, token2, token3, token4, token5, token6, token8, token9, token10'
s2='token2, token7, token4, token3, token5, token6, token8, token10, token9'
comm <(grep -oE '\w+' <<< "$s1" | sort) <(grep -oE '\w+' <<< "$s2" | sort)

以下を提供します。

token1
                token10
                token2
                token3
                token4
                token5
                token6
        token7
                token8
                token9

列は次のとおりです。

  1. トークンはs1のみです。
  2. トークンはs2にのみ存在します。
  3. どちらもトークンです。

そのオプションを渡すことで、熱を抑制できます(例:-33番目の列を抑制する)。

おすすめ記事