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

sh/bash/dash/ksh/zsh等Shell脚本
回复
hmk913
帖子: 17
注册时间: 2011-08-19 10:32

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

#1

帖子 hmk913 » 2012-02-15 21:28

文本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正则怎么做?
上次由 hmk913 在 2012-02-16 14:01,总共编辑 1 次。
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

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

#2

帖子 tosail2010 » 2012-02-16 9:03

代码: 全选

sed -i 'LineNumber s/regexp/replacement/g' filename
A year's plan starts with spring.
hmk913
帖子: 17
注册时间: 2011-08-19 10:32

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

#3

帖子 hmk913 » 2012-02-16 13:53

经高人指点,已经搞定。贴出代码:

代码: 全选

sed -i ""$L"s/\(,\)[[:alnum:]]*\(,[[:alnum:]]*$\)/\1"$m"\2/" a.txt
头像
josephyoung
帖子: 158
注册时间: 2011-11-05 18:53
来自: 南极圈

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

#4

帖子 josephyoung » 2012-02-16 14:03

代码: 全选

sed $L's/\w\+\(,\w\+$\)/'"$m"'\1/' a.txt
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#5

帖子 eexpress » 2012-02-16 14:22

那破高人,写法很旧式的。不就第3列被替换嘛。咋不awk
● 鸣学
fnan
帖子: 919
注册时间: 2009-07-01 22:04

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

#6

帖子 fnan » 2012-02-16 19:24

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:~$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
hmk913
帖子: 17
注册时间: 2011-08-19 10:32

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

#7

帖子 hmk913 » 2012-02-16 19:56

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
回复