次のスペースまで、スペースを含む文字列内のすべてのエントリを削除します。

次のスペースまで、スペースを含む文字列内のすべてのエントリを削除します。

次のパターンに従うテキストからすべての項目を削除したいと思います。

  • すべてのゲームはLinuxで始まります。
  • すべての試合は空白で終わります
  • (次のスペースまでlinux-*を削除してください)

例: この記事からの抜粋:

ibudev1 libudev1 libweather-ion7 libxatracker2 linux-generic linux-headers-generic linux-image-generic linux-libc-dev linux-signed-generic mesa-va-drivers mesa-va-drivers mesa-vdpau-drivers mesa-vdpau-drivers mil

これを得ました:

ibudev1 libudev1 libweather-ion7 libxatracker2 メサ-va-ドライバ メサ-va-ドライバ メサ-vdpau-ドライバ メサ-vdpau-ドライバ milou

UbuntuとBash環境で動作するように設計されています。

ベストアンサー1

perl -lpe 's/(?!<\S)linux-\S*(\s+|$)//g'

そうするでしょう。ただしlinux-、前に空白以外の文字((?!<\S))、後に空白以外の文字(\S*)、1つ以上の空白(\s+)が付いていない場合、または行末が何も置き換えられない場合に限ります。

否定的な振り返りチェックは、...などのパッケージ名で見つかったコンテンツが(?!<\S)一致しないようにすることです。linux-g++-i586-linux-gnuutil-linux-dbgsym

スペースを削除しました。後ろにただし、パッケージ名の前にはありません。つまり、行の最後の単語がlinux-*1の場合、後にスペースが残ります。

おすすめ記事