Добавьте дополнительные символы в строки в файле, используя sed - PullRequest
0 голосов
/ 02 мая 2019

У меня есть .h файл, как показано ниже

//Structure
typedef struct VIN_oFDCAN8_8d836e25_In
{
vbittype unused31 : 8;
vbittype unused30 : 8;
vbittype unused29 : 8;
vbittype unused28 : 8;
vbittype unused27 : 8;
vbittype unused26 : 8;
vbittype unused25 : 8;
vbittype unused24 : 8;
vbittype unused23 : 8;
vbittype unused22 : 8;
vbittype unused21 : 8;
vbittype unused20 : 8;
vbittype unused19 : 8;
vbittype unused18 : 8;
vbittype unused17 : 8;
vbittype VIN_DATA_AH_C : 56;
vbittype unused9_0 : 2;
vbittype VIN_MSG_AH_C : 2;
vbittype unused9_1 : 4;
vbittype unused8 : 8;
vbittype unused7 : 8;
vbittype unused6 : 8;
vbittype unused5 : 8;
vbittype unused4 : 8;
vbittype unused3 : 8;
vbittype unused2 : 8;
vbittype unused1 : 8;
vbittype unused0 : 8;
}__attribute__((packed))_c_VIN_oFDCAN8_8d836e25_In_msgType;


//union
typedef union _c_VIN_oFDCAN8_8d836e25_In_bufTag
{
    vuint8 _c[32];
    _c_VIN_oFDCAN8_8d836e25_In_msgType VIN_oFDCAN8_8d836e25_In;
} _c_VIN_oFDCAN8_8d836e25_In_buf;


//Declaration
_c_VIN_oFDCAN8_8d836e25_In_buf  VIN_oFDCAN8_8d836e25_In_data;

Как видите, все имена типов начинаются с _c_.

_c_VIN_oFDCAN8_8d836e25_In_msgType
_c_VIN_oFDCAN8_8d836e25_In_bufTag
_c_VIN_oFDCAN8_8d836e25_In_buf

Я хочу добавить тег _Moto_для них, как показано ниже.

_c_VIN_oFDCAN8_8d836e25_In_Moto_msgType
_c_VIN_oFDCAN8_8d836e25_In_Moto_bufTag
_c_VIN_oFDCAN8_8d836e25_In_Moto_buf

У меня есть много таких определений, и общий тег, который я могу найти в таком определении: _c_.

Можете ли вы помочь мне с командой sed, чтобызаменить их всех одним выстрелом?

1 Ответ

0 голосов
/ 02 мая 2019

При условии, что всегда есть какая-то строка между _c_ и _In_ и после _In_:

sed 's/_c_[[:alnum:]_]*_In_/&Moto_/g' file.h

должно работать. Он соответствует _c_<zero or more alphanumeric chars and underscores>_In_ и добавляет Moto_ после него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...