文本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正则怎么做?
[已解决]sed正则匹配替换问题求助
-
- 帖子: 17
- 注册时间: 2011-08-19 10:32
[已解决]sed正则匹配替换问题求助
上次由 hmk913 在 2012-02-16 14:01,总共编辑 1 次。
- tosail2010
- 帖子: 83
- 注册时间: 2011-03-27 19:01
- 联系:
Re: sed正则匹配替换问题求助
代码: 全选
sed -i 'LineNumber s/regexp/replacement/g' filename
A year's plan starts with spring.
-
- 帖子: 17
- 注册时间: 2011-08-19 10:32
Re: sed正则匹配替换问题求助
经高人指点,已经搞定。贴出代码:
代码: 全选
sed -i ""$L"s/\(,\)[[:alnum:]]*\(,[[:alnum:]]*$\)/\1"$m"\2/" a.txt
- josephyoung
- 帖子: 158
- 注册时间: 2011-11-05 18:53
- 来自: 南极圈
Re: sed正则匹配替换问题求助
代码: 全选
sed $L's/\w\+\(,\w\+$\)/'"$m"'\1/' a.txt
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: [已解决]sed正则匹配替换问题求助
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:~$
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:~$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
- 帖子: 17
- 注册时间: 2011-08-19 10:32
Re: [已解决]sed正则匹配替换问题求助
这个思路好。。。晕死,原来这么简单,怎么自己没想到?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:~$
