Frage

die Textdatei mit Linien Gegeben

bli foo bla
 abc
 dfg
bli foo bla
 hik
 lmn

was sed oder awk Magie verwandelt es zu

bli foo_01 bla
 abc
 dfg
bli foo_02 bla
 hik
 lmn

so, dass jedes Vorkommen von 'foo' ersetzt durch 'foo_ [Vorkommen Nummer]'.

War es hilfreich?

Lösung

Dies ist ein weiterer Weg radoulov Antwort

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

Sie sollten darauf achten, dass Sie nicht „foobar“ entsprechen, während für „foo“ suchen:

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

Andere Tipps

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

Mit gaffen nawk oder / usr / xpg4 / bin / awk auf Solaris .

Dies ist wahrscheinlich nicht das, was Sie benötigen, aber es könnte einige Ideen in der richtigen Richtung geben.

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

EDIT:

Ich bin ein Tag zu spät und ein Penny kurz, wieder; - (


EDIT2:

Zeichenkodierungen ist eine andere Sache zu Suche nach ... Java-Quellcode nicht unbedingt in den Systemen Standard-Kodierung ist ... es beenden UTF-8 codiert, für alle eingebetteten „höherer Ordnung entities“ zu ermöglichen ;-) Viele * nichts-Dienstprogramme noch nicht charset-aware.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top