用字符串替换包含子字符串前缀的行

时间:2014-04-27 07:56:19

标签: regex awk sed pattern-matching

我想在前面打印/打印包含子字符串的字符串,如下所示。 这里,子串我的意思是VIDIOC,这里我要记录的字符串是VIDIOC_S_CTRL作为例子

自:

ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_G_FMT, &fmt);
if(ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {

要:

ALOGI("VIDIOC_G_FMT");    ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_G_FMT, &fmt);
ALOGI("VIDIOC_S_CTRL");    if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {

我尝试使用 sed 进行网络搜索,但我无法做到。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以使用反向引用:

sed '/VIDIO/ s/.*\(VIDIO\w*\)/ALOGI("\1");   &/' inputfile

sed -r '/VIDIO/ s/.*(VIDIO\w*)/ALOGI("\1");   &/' inputfile

答案 1 :(得分:0)

gawk - 具体

awk '{match($0,/VIDIO\w*/,a); print "ALOGI(\""a[0]"\");",$0}' input.txt

输出:

ALOGI("VIDIOC_G_FMT"); ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_G_FMT, &fmt);
ALOGI("VIDIOC_S_CTRL"); if(ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {