2012-05-09 64 views
0

我system.mss一些文件的內容的文件複製行內的具體內容是:查找特定的路線和使用bash腳本

BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = dlmb_cntlr_0
PARAMETER HW_VER = 3.00.b
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x0003ffff
BUS_INTERFACE SLMB = dlmb_0
BUS_INTERFACE BRAM_PORT = calmb_0_BRAM_PORTA
END

BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = ilmb_cntlr_0
PARAMETER HW_VER = 3.00.b
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x0003ffff
BUS_INTERFACE SLMB = ilmb_0
BUS_INTERFACE BRAM_PORT = ilmb_cntlr_0_BRAM_PORT
END

BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = dlmb_cntlr_1
PARAMETER HW_VER = 3.00.b
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x0000ffff
BUS_INTERFACE SLMB = dlmb_1
BUS_INTERFACE BRAM_PORT = calmb_1_BRAM_PORTA
END

BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = ilmb_cntlr_1
PARAMETER HW_VER = 3.00.b
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x0000ffff
BUS_INTERFACE SLMB = ilmb_1
BUS_INTERFACE BRAM_PORT = ilmb_cntlr_1_BRAM_PORT
END

我只想爲 '參數INSTANCE = ilmb_cntlr_n'

注意複製 '參數C_HIGHADDR =(值)':可以有 'N' 數字這樣的內容,但我想複製地址只有ilmb_cntlr

我該怎麼做?

,一旦地址被複制「例如0x0003ffff我希望它被複製爲0x0003FFB0」

最後兩個FF由B0

更換和任何其他F‘「F的被替換成’並且地址的其餘部分保持不變

我該怎麼做?

+0

我對bash腳本很少有經驗,所以請特別注意 –

+0

幾個小時前你已經問過這個問題:http://goo.gl/9LJh9 如果你想修改這個問題,只需編輯你的帖子,不要不要用相同的標題發佈相同的內容。 – Depado

+0

[使用bash複製特定上下文中的行的部分]可能的副本(http://stackoverflow.com/questions/10510121/copying-parts-of-a-line-within-a-specific-context-using- bash) – tripleee

回答

2

這是一個bash的解決方案:

while read line ; do 
    if [[ $line =~ ^PARAMETER\ INSTANCE\ =\ ilmb_cntlr_[0-9] ]] ; then 
     found=1 
    fi 
    if [[ $line =~ ^PARAMETER\ C_HIGHADDR\ =\ ]] ; then 
     value=$line 
    fi 
    if [[ $line = '' ]] ; then      # end of block 
     if (($found)) ; then      # we are interested in the block 
      value=${value//f/F}      # capitalize f's 
      echo ${value%FF}B0      # replace last two characters with B0 
     fi 
     unset found         # reset variables so we can check the next block 
     unset value 
    fi 
done 

我寧願使用Perl對於這樣的任務,雖然。

+0

我該怎麼做system.mhs文件? –

+0

我只想要更改的地址被複制,並且沒有對system.mss文件進行更改 –

+0

如何將更改後的地址粘貼到另一個文件中? –