2010-12-06 104 views
1

我有这个作为我的目标文件:sed - 命令来匹配一条线,并只更改一个数字部分?

#define NUMTHREADS 4 
#define ar 1000 
#define ac 1000 
#define br 1000 
#define bc 1000 

我想用sed的这些线,不同的号码只更换号码(这样做是bash脚本)。但是,我不想在文件的任何其他位置更改这些值。该脚本无法直接了解这些值,因为它们可能与上面列出的不同。

所以基本上:

#define ar行查找,然后给定号码更换后一个一般数值匹配。这可能与sed?

回答

4

当然,这几乎是正则表达式的一点:

sed [-i] 's/^#define ar [0-9]\+$/#define ar 12345/' <file> 

-i开关使sed将在原地的文件进行操作;第一次让它打印到stdout并确保它做到了你想要的。

当然,从您的第一次描述中可以看出,您可能想要匹配的不仅仅是#define ar。以匹配所有两个字母#define语句:

sed [-i] 's/^\(#define [a-z]\{2\}\) [0-9]\+$/\1 12345/` 

\1被换成任何由\(...\)组相匹配。

相关问题