日期:2014-05-16  浏览次数:20581 次

sed 用法请教一下啊
代码中有多行代码(宏)格式如下:
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, *);
比如:
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, "FilterProc instance" << ip_instanceData);
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, "Test HardWear" << m);
总之第二个参数不固定,

我想这一行替换为2行,如下:
TS_LOG_DEBUG(LOG_CATEGORY_ID_SW, *);
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, *);
即:在行之前插入一行,新行中的第一个参数中的HW修改为SW,
比如:
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, "FilterProc instance" << ip_instanceData);
=》
TS_LOG_DEBUG(LOG_CATEGORY_ID_SW, "FilterProc instance" << ip_instanceData);
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, "FilterProc instance" << ip_instanceData);

用sed怎么一下搞定:
sed -i "s/sour/replac/g" code.C

Thanks

------解决方案--------------------
C/C++ code
owenliang@linux-7lsl:~/csdn/src> echo "TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, "FilterProc instance" << ip_instanceData);" | sed -rn "/LOG_CATEGORY_ID_HW/ {
> h
> s/(.*)CATEGORY_ID_HW(.*)/\1CATEGORY_ID_SW\2/g
> G
> p
> }"
TS_LOG_DEBUG(LOG_CATEGORY_ID_SW, FilterProc instance << ip_instanceData);
TS_LOG_DEBUG(LOG_CATEGORY_ID_HW, FilterProc instance << ip_instanceData);

------解决方案--------------------
Python code

sed -i '/TS_LOG_DEBUG(LOG_CATEGORY_ID_HW/{h;s/\(TS_LOG_DEBUG(LOG_CATEGORY_ID_\)HW/\1SW/g;p;g}' test.c