bash + var2でvar2で定義された文字列を削除する方法

bash + var2でvar2で定義された文字列を削除する方法

Bashスクリプトで次の変数を使用しています - val1、val2

val1は、オペレーティングシステムLinuxに存在する必要があるすべてのディスクを表します。

val2 はオペレーティングシステム Linux の現在のディスクを表します。

私の目標は、「$ val1」変数から「$ val2」ディスクを削除することです。

val1="sdb sdc sdd sde sdf sdg sdh sdi sdj sdk"
val2="sdb sdc sdf sdd sde sdg"

予想される結果:

val3=sdh sdi sdj sdk

そして、次のようにval3の結果を設定します。

ベストアンサー1

そしてsed置換:

val3=$(sed -E 's/\<('"$(tr ' ' '|' <<<"$val2")"')\> *//g' <<<"$val1")
echo "$val3"
sdh sdi sdj sdk

  • $(tr ' ' '|' <<<"$val2")- 正規表現交代グループを模倣して、sdb|sdc|sdf|sdd|sde|sdg全体の構造は次のようになります。\<(sdb|sdc|sdf|sdd|sde|sdg)\>
  • \<\>- 単語の境界。

おすすめ記事