削除構文が正しくありません。sed で削除するには、次のことを行う必要があります。
sed '(separator) [pattern to delete](separator)d'
たとえば、次のようになります。
sed -e '/regex/d' infile
これは、一般的に行全体を削除するためのものです。代わりに、行の一部を保持することで、キャプチャと置換が必要になります。
sed -e 's/regex-to-drop\(regex-to-keep\)/\1/g' input-file
\( \)
「s」は代用、「g」はグローバル用\1
です。一連のキャプチャーアイテムがあれば、
\(something\)\(something_else\)
sed コマンドの代替部分に次のコードを追加するだけで、それらの間に別の文字を入れて再現できました。
\1 ;; \2
これにより、次が生成されます。something ;; something_else
全体としては次のようになります。
sed -e 's/\(something\)\(something_else\)/\1 ;; \2/g' input-file
あなたの場合、コロンの前にすべてを削除したいようです:
sed -e 's/^.*:\(.*\)$/\1/g' input-file
@fedorquiによって提案された上記の脚注:
Sed は標準の正規表現表記を使用して行の先頭と末尾を参照するため、「^」は行の先頭を参照し、「$」は行の末尾を参照します。したがって、上記の完全な説明は次のとおりです。
's/^.*:
行頭からコロンまでのすべて (「s」は、「置換」コマンドを設定していることを意味します)。
それで:
\(.*\)$/
ラインの最後まですべてキャプチャし、
/\1/g'
キャプチャされたアイテムで WHOLE 行を置き換えます。グローバルに(ファイル全体に対して)実行します。