다음 줄이 있습니다.
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
문자열이 패턴으로 시작하지 않는 경우에도 작동합니다.