POSIX文字クラスと正規表現を組み合わせる方法は?

POSIX文字クラスと正規表現を組み合わせる方法は?

sedで使用される正規表現では、さまざまな文字クラスを組み合わせる必要があります。[:word:]とマイナスを一致させる必要があります-。どのように見えますか?私の試みはすべて解決策を見つけたり試みることに失敗しました。

次の文字列から最初のスペースまですべての項目を一致させたいと思います。

foo-bar     |
baz-xyz-123 |

ベストアンサー1

POSIX的に:

sed 's/[^[:alnum:]_-]//g'

現在のロケールから英数字以外のすべての文字が削除されます_-

$ echo 'foo-bar     |' | sed -e 's/[^[:alnum:]_-]//g'
foo-bar

ただし、最初の空白より前の内容をすべて印刷するには、次のようにします。

sed -e 's/^\([^ ]*\) .*/\1/'

またはawk:

awk '{print $1}'

おすすめ記事