문제

줄이있는 일반 텍스트 파일이 주어졌습니다

bli foo bla
 abc
 dfg
bli foo bla
 hik
 lmn

Sed 또는 Awk Magic이 그것을 변형시키는 것

bli foo_01 bla
 abc
 dfg
bli foo_02 bla
 hik
 lmn

'foo'의 모든 발생은 'foo_ [resence number]로 대체됩니다.

도움이 되었습니까?

해결책

이것은 Radoulov의 대답을 표현하는 또 다른 방법입니다

awk '/foo/ {sub(/foo/, "&_" sprintf("%02d",++c))} 1' infile

"foo"를 찾는 동안 "foobar"와 일치하지 않도록주의해야합니다.

gawk '/\<foo\>/ {sub(/\<foo\>/, "&_" sprintf("%02d",++c))} 1' 

다른 팁

awk '!/foo/||sub(/foo/,"&_"++_)' infile

사용 둔한 사람, nawk 또는 /usr/xpg4/bin/awk ~에 Solaris.

이것은 아마도 당신이 필요로하는 것이 아니지만 올바른 방향으로 아이디어를 줄 수 있습니다.

Administrator@snadbox3 ~
$ cd c:/tmp

Administrator@snadbox3 /cygdrive/c/tmp
$ cat <<-eof >foo.txt
> foo
>  abc
>  dfg
> foo
>  hik
>  lmn
> eof

Administrator@snadbox3 /cygdrive/c/tmp
$ awk '/^foo$/{++fooCount; print($0 "_" fooCount);} /^ /{print}' foo.txt
foo_1
 abc
 dfg
foo_2
 hik
 lmn

편집하다:

나는 하루 늦고 페니가 짧아서 다시 ;-(


edit2 :

캐릭터 인코딩은 ... Java 소스 코드는 반드시 시스템 기본 인코딩에 반드시 필요한 것은 아닙니다 ... UTF-8을 인코딩하여 내장 된 "고차 엔터티";-) 많은 *닉스 유틸리티를 허용합니다. 여전히 숯불 인식이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top