仅当特定的字符序列属于引号中包含的字符串时,才需要使用sed替换文本中的字符序列。
例如以下文本:
这是“ movies.YouTube_id”列引用的YouTube视频。
应该这样转换:
这是“ movies.you_tube_id”列引用的YouTube视频。
也就是说,无论子串“ YouTube”是用单引号(')括起来的字符串的一部分,还是用“ you_tube”替换,无论用引号括起来的前导字符还是尾随字符。
明显
sed -r "s/YouTube/you_tube/g"
之所以不起作用,是因为无论引用如何,它都会在各处将“ YouTube”替换为“ you_tube”。我可以使用哪个正则表达式来完成任务?
先感谢您。
使用GNU sed:
sed -E "s/('[^']*)YouTube([^']*')/\1you_tube\2/g" file
输出:
这是“ movies.you_tube_id”列引用的YouTube视频。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句