次の行があります。
abababtestab
sed
行の先頭にあるすべての項目を削除する式を見つけようとしているので、変換された行は次のようになります。ab
testab
これは簡単なはずですが、実際には何も知りませんsed
。
私が今まで持っているのは次のとおりです。
sed 's/^ab//'
しかし、これはabの最初の発生を排除します。
答え1
答え2
その他sed
:
sed -e ':1' -e 's/^ab//;t1'
各入力行にラベルを設定し、行の先頭:1
で置き換えますs
。置換が成功ab
すると、estコマンドはラベルを付けるために分岐し、行の先頭にパターンが表示されなくなるまで操作を再実行して完了します。s
t
1
ab
答え3
リバース文字列を処理する方が簡単かもしれません。これにより、最初のイベントを除くすべての(リバース)イベントを削除できます。
$ echo "abababtestab" |
rev | sed 's/ba//2g' | rev
testab
文字列がパターンで始まらない場合でも機能します。