私はこの文字列を持っています:
data="week 50; data; data; data; data"
sedを使用して週の部分を消去したいので、次のようになります。データ; データ; 私がこれを思いついたデータですが、どうやら機能していないようです、なぜですか?間違ったルールはどこにありますか?
コード:
echo ${data} | sed '/%week.*%;/s/%week.*%;//'
シェール
これで十分です:
echo ${data} | sed 's/week[^;]*;//'
出力:
data; data; data; data
week
これは、次のセミコロン()までのプラスに一致し、[^;]*;
それを削除します。
余分なスペースも削除したい場合は、次のようにします。
echo ${data} | sed 's/week[^;]*; *//'
「週」で始まるテキストを含むセミコロンで区切られたフィールドを本当に削除したいですか、それとも最初のフィールドを削除したいだけですか?検討:
$ echo "week 50; data; data; data; data" | cut -d\; -f2-
data; data; data; data
$ echo "week 50; data; data; data; data" | sed 's/[^;]*;//'
data; data; data; data