分页: 1 / 1

[已解决]sed正则匹配替换问题求助

发表于 : 2012-02-15 21:28
hmk913
文本text.txt内容如下:
null,a,1,9,小
null,b,3,11,大
null,c,3,21,大
null ,d,2,5,小
....
现在是要把指定行$L的9,11,21,5(就是第3个逗号和第4个逗号之间的数).....这几个数替换为指定数$m,请问sed正则怎么做?

Re: sed正则匹配替换问题求助

发表于 : 2012-02-16 9:03
tosail2010

代码: 全选

sed -i 'LineNumber s/regexp/replacement/g' filename

Re: sed正则匹配替换问题求助

发表于 : 2012-02-16 13:53
hmk913
经高人指点,已经搞定。贴出代码:

代码: 全选

sed -i ""$L"s/\(,\)[[:alnum:]]*\(,[[:alnum:]]*$\)/\1"$m"\2/" a.txt

Re: sed正则匹配替换问题求助

发表于 : 2012-02-16 14:03
josephyoung

代码: 全选

sed $L's/\w\+\(,\w\+$\)/'"$m"'\1/' a.txt

Re: [已解决]sed正则匹配替换问题求助

发表于 : 2012-02-16 14:22
eexpress
那破高人,写法很旧式的。不就第3列被替换嘛。咋不awk

Re: [已解决]sed正则匹配替换问题求助

发表于 : 2012-02-16 19:24
fnan
kose3@kose3-desktop:~$ cat f1.txt
null,a,1,9,小
null,b,3,11,大
null,c,3,21,大
null ,d,2,5,小
kose3@kose3-desktop:~$ L=2;m=99;sed "${L}s/,[0-9]*/,$m/3" f1.txt
null,a,1,9,小
null,b,3,99,大
null,c,3,21,大
null ,d,2,5,小
kose3@kose3-desktop:~$

Re: [已解决]sed正则匹配替换问题求助

发表于 : 2012-02-16 19:56
hmk913
fnan 写了:kose3@kose3-desktop:~$ cat f1.txt
null,a,1,9,小
null,b,3,11,大
null,c,3,21,大
null ,d,2,5,小
kose3@kose3-desktop:~$ L=2;m=99;sed "${L}s/,[0-9]*/,$m/3" f1.txt
null,a,1,9,小
null,b,3,99,大
null,c,3,21,大
null ,d,2,5,小
kose3@kose3-desktop:~$
这个思路好。。。晕死,原来这么简单,怎么自己没想到? :em06