我将此作为目标文件:
#define NUMTHREADS 4
#define ar 1000
#define ac 1000
#define br 1000
#define bc 1000
我想用sed用不同的数字替换这些行中的数字(这是一个bash脚本)。但是,我不想在文件中的任何其他位置更改这些值。脚本无法直接知道这些值,因为它们可能与上面列出的不同。
基本上是这样的:
使用#define ar
查找行,然后使用给定数字替换常规数字匹配。这可能与sed一起使用吗?
答案 0 :(得分:4)
当然,这几乎是正则表达式的重点:
sed [-i] 's/^#define ar [0-9]\+$/#define ar 12345/' <file>
-i
开关导致sed对文件进行就地操作;第一次让它离开,让它打印到stdout并确保它能达到你想要的效果。
当然,从您的第一次描述中,您可能希望匹配的不仅仅是#define ar
。要匹配所有双字母#defines:
sed [-i] 's/^\(#define [a-z]\{2\}\) [0-9]\+$/\1 12345/`
\1
替换为\(...\)
组匹配的任何内容。