考虑到与行纯文本文件

bli foo bla
 abc
 dfg
bli foo bla
 hik
 lmn

什么的sed或AWK魔术将其转换为

bli foo_01 bla
 abc
 dfg
bli foo_02 bla
 hik
 lmn

,使得 '富' 的每一次出现被替换 'foo_ [occurence数]'。

有帮助吗?

解决方案

这是另一种方式来表达radoulov的答案

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

而寻找“富”你要小心,你不匹配“foobar的”

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

其他提示

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

使用的 GAWK 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编码,允许任何嵌入式“高阶实体” ;-)很多* nix的公用事业仍然没有字符集识别的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top