SED 또는 AWK로 대체를 열거하십시오
-
22-08-2019 - |
문제
줄이있는 일반 텍스트 파일이 주어졌습니다
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을 인코딩하여 내장 된 "고차 엔터티";-) 많은 *닉스 유틸리티를 허용합니다. 여전히 숯불 인식이 아닙니다.
제휴하지 않습니다 StackOverflow