2014-12-03 226 views
1

我想写一个脚本来自动生成具有不同参数的多个输出文件的过程。这需要在以下代码语句中的CONFIG.c_mm2s_burst_size和CONFIG.c_s2mm_burst_size之后替换花括号中的数字。用正则表达式替换大括号内的数字

set_property -dict [ list CONFIG.c_include_mm2s {1} CONFIG.c_include_mm2s_dre {0} CONFIG.c_include_s2mm_dre {0} CONFIG.c_include_sg {0} CONFIG.c_m_axi_mm2s_data_width {32} CONFIG.c_m_axis_mm2s_tdata_width {32} CONFIG.c_micro_dma {0} CONFIG.c_mm2s_burst_size {2} CONFIG.c_s2mm_burst_size {2} CONFIG.c_sg_length_width {23} ] $axi_dma_0 

该代码在tcl。我试过变量替换,但它不能正确解释类似的东西 CONFIG.c_mm2s_burst_size {$var}

所以我认为用sed和perl替换文本中的数字应该不难。但是,我搜索了整整一晚都没有成功。

我曾尝试:

sed -r 's/burst_size\>\s\{(\d+)\}/256/g' 

sed -r 's/burst_size\s\{(\.+)\}/256/g' 

sed -r 's/burst_size#\{(\d+)\}/256/g' 

sed -r 's/burst_size\s\\{(\d+)\\}/256/g' 

更多的人,他们没有工作。我在GNU 4.2.2上使用Ubuntu。只要我系统地更改数字,欢迎使用其他语言的其他语言。

非常感谢

回答

1

要更换里面这是之前由字符串burst_size{}括号中的数字partcular,你可以使用下面的sed命令。 sed将不支持\s\d。取而代之的\s您可以使用POSIX符号的[[:space:]],而是\d,你可以使用[0-9]

sed 's/\(burst_size \+{\)[0-9]\+}/\1256}/g' 
sed -r 's/(burst_size +\{)[0-9]+\}/\1256}/g' 

例子:

$ echo 'CONFIG.c_mm2s_burst_size {2} CONFIG.c_s2mm_burst_size {2} CONFIG.c_sg_length_width {23} ] $axi_dma_0' | sed 's/\(burst_size \+{\)[0-9]\+}/\1256}/g' 
CONFIG.c_mm2s_burst_size {256} CONFIG.c_s2mm_burst_size {256} CONFIG.c_sg_length_width {23} ] $axi_dma_0 
$ echo 'CONFIG.c_mm2s_burst_size {2} CONFIG.c_s2mm_burst_size {2} CONFIG.c_sg_length_width {23} ] $axi_dma_0' | sed -r 's/(burst_size +\{)[0-9]+\}/\1256}/g' 
CONFIG.c_mm2s_burst_size {256} CONFIG.c_s2mm_burst_size {256} CONFIG.c_sg_length_width {23} ] $axi_dma_0 
+0

谢谢Raj!这样可行。 – user2404894 2014-12-03 05:33:07

+0

不客气.. – 2014-12-03 05:34:07

1

您可以简单地使用下面的Perl一行代码。

perl -pe 's/burst_size\s+{\K\d+/256/g' 
+0

谢谢HWND,工程。但是,如果我接受第一响应者的答案,希望你不介意。 – user2404894 2014-12-03 05:29:45

+0

不用担心.... – hwnd 2014-12-03 05:30:18

1

\s\d而不是sed的

认识你可以使用

sed -r 's/(burst_size)\{[0-9]+\}/\1{256}/g' input 

sed -r 's/(burst_size[[:space:]])\{[[:digit:]]+\}/\1{256}/g' input 
+0

非常感谢您的帮助! – user2404894 2014-12-03 05:32:49

+0

@ user2404894欢迎您:) – nu11p01n73R 2014-12-03 05:35:15

相关问题