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}'