私はほとんどすべてを試しました(私は推測します)が、何もうまくいきませんでした。(オペレーティングシステム: Ubuntu 12.04)
照合する式 (テキスト ファイルから削除):
a c 4
a k 23
o s 1
私が試したこと:
's/[[a-z][:space:][a-z][:space:][0-9]]\{1,\}//gi'
's/.\s.\s[0-9]+//g'
's/[:alpha:][:space:][:alpha:][:space:][:digit:]+'
これは一致するはずです:
sed 's/[a-z][ ]*[a-z][ ]*[0-9]*//gi'
あなたの最初の試みはいくつかの角括弧を見逃しており、最も外側のものは必要ありません:
sed 's/[a-z][[:space:]][a-z][[:space:]][0-9]\{1,\}//gi' input
をエスケープする必要があるため、2番目の例は失敗しますが+
、それでもgnu sedでのみ機能します。
sed 's/.\s.\s[0-9]\+//g' input
また、最後のものといくつかの同様の問題:
sed 's/[[:alpha:]][[:space:]][[:alpha:]][[:space:]][[:digit:]]\+//' input
真ん中が近い!私を超えた理由で、プラス記号をエスケープする必要があります。また、ドット " .
" を " "に置き換えて、[a-z]
文字のみに一致するようにしました。
sed 's/[a-z]\s[a-z]\s[0-9]\+//g'
古いバージョンのボーナス ポータブル バージョンsed
(こんにちは、Mac ユーザー!)。一部のsed
実装は " +
" にうるさいです:
sed 's/[a-z]\s[a-z]\s[0-9][0-9]*//g'
[...]
文字クラスを定義します。からまで[a-z]
の任意の文字に一致します。連続する文字を一致させるには、それぞれにクラスを使用する必要があります: .a
z
[a-z][[:space:]][a-z]
+
特別な意味を持たせるには、バックスラッシュを付ける必要があります: [0-9]\+
.
名前付き文字クラスは、文字クラス内でのみ機能します[[:alpha:]][[:space:]]
。