文字列Aに漢字が表示されている場合は、順序を維持しながら文字列Bからそれらを削除するにはどうすればよいですか?

文字列Aに漢字が表示されている場合は、順序を維持しながら文字列Bからそれらを削除するにはどうすればよいですか?

非常に長い中国語文字列がありますが、この質問のために次のようにします。

啊爱好情人心安静排全装按照八把握爸吧白菜酒色夭百班长板

そして

阿姨啊挨打矮小爱国护安检慰置岸边上按摩时案子暗示巴士拔

最初の文字列には、すべての「簡単な」中国語文字が一覧表示されます。 2番目の文字列には「yi」と「中」の漢字の両方が表示されますが、「中」の漢字のみが必要です。 2番目の文字列から「yi」文字を削除したいと思います。

たとえば、編集後の2番目の文字列には「ah」または「love」は含まれません(おそらくより多くの削除項目を含む)。どちらも最初の文字列に表示されるためです。

質問:文字列Aに漢字が表示されたときに順序を維持しながら、文字列Bから漢字を削除する方法は?

私はこれがawkまたはsed他のものとして解決できると思います。この文字列を2つのテキストファイルに変換し、2つのコマンドのいずれかを使用できるようです。別のファイルAからファイルBの行を削除する方法は? しかし、私はセカンダリファイルを作成せずにこれを実行したいと思います。

文字列の文字の順序を維持することも重要です。

ベストアンサー1

構文(ksh、bash、zsh)を受け入れるシェルでは、${parameter/pattern/string}次のことができます。

$ easy='啊爱好情人心安静排全装按照八把握爸吧白菜酒色夭百班长板'
$ intermediate='阿姨啊挨打矮小爱国护安检慰置岸边上按摩时案子暗示巴士拔'

$ echo "${intermediate//[$easy]/}" 
阿姨挨打矮小国护检慰置岸边上摩时案子暗示巴士拔

これは正規表現に似た文字選択に基づいています[…]。存在するすべての単一文字
は削除されます。intermediateeasy

シェルに依存しない対応は次のとおりです。

$ echo "$intermediate" | sed 's/['"$easy"']//g'

阿姨挨打矮小国护检慰置岸边上摩时案子暗示巴士拔

おすすめ記事