Re: Replace strings across all the files using script

From: Joe Perches
Date: Fri May 16 2014 - 15:56:40 EST


On Fri, 2014-05-16 at 12:07 -0700, anish singh wrote:
> I am planning to do some cleanup and want to
> replace some string as below across all the files
> in kernel.
> pr_err("%s "
> TO
> pr_err("%s: "
>
> Basically adding semicolon after the %s.
> How can i do it across all the files? I don't
> want to individually go to each file and do it.

Presumably, this would be done only for files that use
__func__ as the first argument to printk.

Something like this might work moderately well.

$ git ls-files | grep '\.[ch]$' | \
xargs perl -i -e 'local $/; while (<>) { s/\b(printk|pr_(?:emerg|crit|alert|err|notice|warn|warning|info))\s*\(\s*\"\%s(?:\s*\(\s*\)\s*)?(?:\s*:\s*)?\s*(?:\-\s*)?([^"]+)"\s*,(\s*)__func__\b/$1("%s: $2",$3__func__/g; print; }'


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/