2

私はこの文字列を持っています:

 data="week 50; data; data; data; data"

sedを使用して週の部分を消去したいので、次のようになります。データ; データ; 私がこれを思いついたデータですが、どうやら機能していないようです、なぜですか?間違ったルールはどこにありますか?

コード:

echo ${data} | sed '/%week.*%;/s/%week.*%;//'

シェール

4

2 に答える 2

5

これで十分です:

echo ${data} | sed 's/week[^;]*;//'

出力:

data; data; data; data

weekこれは、次のセミコロン()までのプラスに一致し、[^;]*;それを削除します。

余分なスペースも削除したい場合は、次のようにします。

 echo ${data} | sed 's/week[^;]*; *//'
于 2012-12-18T14:52:39.417 に答える
1

「週」で始まるテキストを含むセミコロンで区切られたフィールドを本当に削除したいですか、それとも最初のフィールドを削除したいだけですか?検討:

$ 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
于 2012-12-19T13:16:20.263 に答える