2017-10-27 15 views

답변

2

복사 붙여 넣기 나는 다른 곳에서 게시 한 :

$ # replacing last occurrence 
$ # can also use sed -E 's/:([^:]*)$/-\1/' 
$ echo 'foo:123:bar:baz' | sed -E 's/(.*):/\1-/' 
foo:123:bar-baz 
$ echo '456:foo:123:bar:789:baz' | sed -E 's/(.*):/\1-/' 
456:foo:123:bar:789-baz 
$ echo 'foo and bar and baz land good' | sed -E 's/(.*)and/\1XYZ/' 
foo and bar and baz lXYZ good 
$ # use word boundaries as necessary - GNU sed 
$ echo 'foo and bar and baz land good' | sed -E 's/(.*)\band\b/\1XYZ/' 
foo and bar XYZ baz land good 

$ # replacing last but one 
$ echo 'foo:123:bar:baz' | sed -E 's/(.*):(.*:)/\1-\2/' 
foo:123-bar:baz 
$ echo '456:foo:123:bar:789:baz' | sed -E 's/(.*):(.*:)/\1-\2/' 
456:foo:123:bar-789:baz 

$ # replacing last but two 
$ echo '456:foo:123:bar:789:baz' | sed -E 's/(.*):((.*:){2})/\1-\2/' 
456:foo:123-bar:789:baz 
$ # replacing last but three 
$ echo '456:foo:123:bar:789:baz' | sed -E 's/(.*):((.*:){3})/\1-\2/' 
456:foo-123:bar:789:baz 

더 읽을 거리 :

2

이것을 수행하는 재미있는 방법은 rev을 사용하여 각 행의 문자를 반대로하고 sed 대체 문자를 거꾸로 쓰는 것입니다.

rev input_file | sed 's/nrettap/tnemecalper/' | rev 
2

이 (GNU가 나오지도) 당신을 위해 일 수 있습니다

sed 's/\(.*\)pattern/\1replacement/' file 

사용 탐욕 패턴 공간을 삼켜 다음 정규 표현식 엔진이 라인을 통해 한 걸음 뒤로 물러나하고 마지막 즉, 첫 번째 일치를 찾을 수 시합.