Chinaunix
标题:
sed如何计数呢?
[打印本页]
作者:
122285969
时间:
2010-08-13 11:12
标题:
sed如何计数呢?
例,a文件内容如下:
A B C D E
C D A B
E D E A A
Y A S D Z A C A
其中有7个A字符,要怎么实现在每个A字符后面标记计数呢?如:
A(1) B C D E
C D A(2) B
E D E A(3) A(4)
Y A(5) S D Z A(6) C A(7)
谢谢……
作者:
网中淫
时间:
2010-08-13 11:20
打个点,计
请看tim作品
作者:
expert1
时间:
2010-08-13 11:20
awk简单点,不过把出现的次数打印在A后面有点难度。
作者:
122285969
时间:
2010-08-13 11:22
就是看了tim的教程才想到这个问题,不知道如何解决。
作者:
lkk2003rty
时间:
2010-08-13 11:23
awk '{for(i=1;i<=NF;i++)if($i=="A")$i=$i"("++cnt")"}1' file
作者:
122285969
时间:
2010-08-13 11:28
回复
5#
lkk2003rty
AWK 确实不错, SED 有没有办法呢?
作者:
wtuter
时间:
2010-08-13 11:42
回复
1#
122285969
awk '/A/{i++;gsub(/A/,"A ""("i") ",$0);print}'
作者:
ly5066113
时间:
2010-08-13 12:14
$ cat urfile
A B C D E
C D A B
E D E A A
Y A S D Z A C A
$ sed -nf test.sed urfile
A(1) B C D E
C D A(2) B
E D E A(3) A(4)
Y A(5) S D Z A(6) C A(7)
$ cat test.sed
#! /bin/sed -f
:a
/\<A\>/{
x
/^$/s/^/1/
G
s/\<A\>/&\n/
s/^\([0-9][0-9]*\)\n\(.*\)\(A\n\)/\1\n\2A\1/
h
s/\n.*/-1/
s/$/-;9aaaaaaaaa98aaaaaaaa87aaaaaaa76aaaaaa65aaaaa54aaaa43aaa32aa21a100/
: add
/^--[^a]/!{
s/^\([0-9a]*\)\([0-9]\)-\([^-]*\)-\(.*;.*\2\(a*\)\2.*\)/\1-\3-\5\4/
s/^\([^-]*\)-\([0-9a]*\)\([0-9]\)-\(.*;.*\3\(a*\)\3.*\)/\1-\2-\5\4/
s/-\(aaaaaaaaa\(a\)\)\{0,1\}\(a*\)\([0-9]*;.*\([0-9]\)\3\5\)/-\2\5\4/
b add
}
s/^--\([^;]*\);.*/\1/
x
ba
}
s/.*\n//
s/\(A\)\([0-9]*\)/\1(\2)/g
p
复制代码
作者:
expert1
时间:
2010-08-13 12:15
tim好强大,仰望之。
作者:
expert1
时间:
2010-08-13 12:24
回复
7#
wtuter
O(∩_∩)O~,这个想法好帅啊
作者:
122285969
时间:
2010-08-13 13:16
都是神人啊,顶礼膜拜之!
得好好消化了。
作者:
122285969
时间:
2010-08-13 13:25
很惭愧,初看只看懂了 lkk2003rty 写的这个。看来道路还很长啊,自我激励!
作者:
99超人
时间:
2010-08-13 14:26
提示:
作者被禁止或删除 内容自动屏蔽
作者:
welcome008
时间:
2010-08-13 14:42
/\<A\>/
与
/A/
啥区别?
作者:
122285969
时间:
2010-08-13 15:54
回复
14#
welcome008
/\<A\>/ 匹配一个单词,默认以空格或者TAB分隔。也就是说A前后没东西了,只有分隔符。比如:A B C 这样的行
/A/ 只要含有A的字符都能匹配。也包括 /\<A\>/ 匹配的内容。比如: ABC 或者 A B C 或者 A 这样的行
不知道解释得对不对,
作者:
welcome008
时间:
2010-08-13 16:05
谢了
作者:
好看的附件
时间:
2010-08-13 16:07
全是神人,mark,等待学习
作者:
davidbeckham921
时间:
2010-08-13 16:12
ly5066113 发表于 2010-08-13 12:14
基本无敌了,一顿仰视!~~
作者:
cainoliu
时间:
2010-08-13 16:28
都好NB啊
作者:
syshack
时间:
2010-08-13 22:52
发个表情膜拜Tim
作者:
ywlscpl
时间:
2010-08-14 08:20
awk -v RS=A '{printf $0RT"("NR")"}' file
复制代码
作者:
saliana
时间:
2010-08-14 10:50
强大...哈哈
魔力私服
破天一剑私服
石器时代私服
作者:
wsysx
时间:
2010-08-14 14:35
就是看了tim的教程才想到这个问题,不知道如何解决。
122285969 发表于 2010-08-13 11:22
有链接么?
作者:
122285969
时间:
2010-08-14 23:09
回复
23#
wsysx
http://bbs.chinaunix.net/thread-1762006-1-2.html
Tim前不久发布的,新鲜着呢
作者:
zzy7186
时间:
2010-10-05 19:12
回复
10#
expert1
崇拜啊!
作者:
dibug
时间:
2010-10-05 20:22
root@yeah /cygdrive/d
$ cat a.txt
A B C D E
C D A B
E D E A A
Y A S D Z A C A
root@yeah /cygdrive/d
$ n=0;while read line;do a=($line);for i in ${a[@]};do [[ $i == "A" ]] && { ((n
++));echo -n $i"($n)"' ' ; }|| echo -n $i' ';done;echo;done <a.txt
A(1) B C D E
C D A(2) B
E D E A(3) A(4)
Y A(5) S D Z A(6) C A(7)
root@yeah /cygdrive/d
$
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2