枚举替代用awk或者sed
-
22-08-2019 - |
题
考虑到与行纯文本文件
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的公用事业仍然没有字符集识别的。
不隶属于 StackOverflow