, 어떻게 거기에 관계없이 얼마나 많은 성냥 만 마지막 일치를 교체하는 나는마지막 줄을 sed와 바꾸는 방법은 무엇입니까? <code>sed</code>와
sed 's/pattern/replacement/'
를 사용하여 라인의 첫 경기를 교체 할 수 있습니다 그리고 모든
sed 's/pattern/replacement/g'
를 사용하여 일치 그 전에 있니? 뭔가에서
, 어떻게 거기에 관계없이 얼마나 많은 성냥 만 마지막 일치를 교체하는 나는마지막 줄을 sed와 바꾸는 방법은 무엇입니까? <code>sed</code>와
sed 's/pattern/replacement/'
를 사용하여 라인의 첫 경기를 교체 할 수 있습니다 그리고 모든
sed 's/pattern/replacement/g'
를 사용하여 일치 그 전에 있니? 뭔가에서
복사 붙여 넣기 나는 다른 곳에서 게시 한 :
$ # 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
더 읽을 거리 :
이것을 수행하는 재미있는 방법은 rev
을 사용하여 각 행의 문자를 반대로하고 sed 대체 문자를 거꾸로 쓰는 것입니다.
rev input_file | sed 's/nrettap/tnemecalper/' | rev
이 (GNU가 나오지도) 당신을 위해 일 수 있습니다
sed 's/\(.*\)pattern/\1replacement/' file
사용 탐욕 패턴 공간을 삼켜 다음 정규 표현식 엔진이 라인을 통해 한 걸음 뒤로 물러나하고 마지막 즉, 첫 번째 일치를 찾을 수 시합.