0
我想要一段具有一些定義的c代碼。我想解析文件做一些改變並創建一個新文件。我希望將定義中的偏移值添加到文件中指示的相應基地址。如果有多個基地址和多個偏移量,我希望它能夠工作。我在下面顯示了一個輸入文件和我預期的輸出。我怎樣才能使用正則表達式或任何其他方式來做到這一點。解析一個文件,並使用正則表達式進行修改
Input.c中
/*******************************************************************
*
* Author: XYZ.
* Version: 1.0
*
*******************************************************************/
#define STDIN_BASEADDRESS 0x40600000
#define STDOUT_BASEADDRESS 0x40600000
/******************************************************************/
/* Definitions for driver UARTLITE */
#define XPAR_XUARTLITE_NUM_INSTANCES 1
/* Definitions for peripheral RS232_UART_1 */
#define XPAR_RS232_UART_1_BASEADDR 0x40600000
#define XPAR_RS232_UART_1_HIGHADDR 0x4060FFFF
/* Definitions for peripherals */
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_BASEADDR 0x76800000
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_HIGHADDR 0x7680FFFF
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_RESET_CNTRS_OFFSET 0x0
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_1_LOW_OFFSET 0xc
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_1_HIGH_OFFSET 0x10
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_3_LOW_OFFSET 0x1c
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_3_HIGH_OFFSET 0x20
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_BASEADDR 0x74800000
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_HIGHADDR 0x7480FFFF
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_IP_OFFSET 0x0
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_IP_MASK_OFFSET 0x4
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_NEXT_HOP_IP_OFFSET 0x8
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_OQ_OFFSET 0xc
#define XPAR_MICROBLAZE_0_M15_AXIS_PROTOCOL GENERIC
#define XPAR_MICROBLAZE_0_S15_AXIS_PROTOCOL GENERIC
/******************************************************************/
expected_output.c
/*******************************************************************
*
* Author: XYZ.
* Version: 1.0
*
*******************************************************************/
#define STDIN_BASEADDRESS 0x40600000
#define STDOUT_BASEADDRESS 0x40600000
/******************************************************************/
/* Definitions for driver UARTLITE */
#define XPAR_XUARTLITE_NUM_INSTANCES 1
/* Definitions for peripheral RS232_UART_1 */
#define XPAR_RS232_UART_1_BASEADDR 0x40600000
#define XPAR_RS232_UART_1_HIGHADDR 0x4060FFFF
/* Definitions for peripherals */
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_BASEADDR 0x76800000
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_HIGHADDR 0x7680FFFF
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_RESET_CNTRS_OFFSET 0x76800000
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_1_LOW_OFFSET 0x7680000c
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_1_HIGH_OFFSET 0x76800010
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_3_LOW_OFFSET 0x7680001c
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR0_MAC_3_HIGH_OFFSET 0x76800020
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_BASEADDR 0x74800000
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_HIGHADDR 0x7480FFFF
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_IP_OFFSET 0x74800000
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_IP_MASK_OFFSET 0x74800004
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_NEXT_HOP_IP_OFFSET 0x74800008
#define XPAR_NF10_ROUTER_OUTPUT_PORT_LOOKUP_0_BAR1_LPM_OQ_OFFSET 0x7480000c
#define XPAR_MICROBLAZE_0_M15_AXIS_PROTOCOL GENERIC
#define XPAR_MICROBLAZE_0_S15_AXIS_PROTOCOL GENERIC
/******************************************************************/
的Input.c中是由一個工具生成的,我不想手動編輯文件。所以更喜歡一個實際上可以做到的腳本。你有什麼想法如何使用腳本來做到這一點。 – user2532296
您是否擁有對該工具的控制權?如果是這樣,我會修改該工具。我將修改我的答案,以便使用正則表達式添加腳本以完成您的任務,並在完成後再發表評論。 –
謝謝。腳本會非常棒,我期待着它。該工具不允許我修改,該工具固有地打印這樣的結果。而且,input.c只是一個小實例,實際文件運行時間很長。 – user2532296