仅当特定字符序列属于引号中包含的字符串时,我才需要使用 sed 替换文本中的字符序列。
例如以下文字:
This is a YouTube video referenced by the 'movies.YouTube_id' column.
应该这样转换:
This is a YouTube video referenced by the 'movies.you_tube_id' column.
即仅当子字符串是用单引号 (') 括起来的字符串的一部分时,才将子字符串“YouTube”替换为“you_tube”,而不管引号中的前导和/或尾随字符。
显然
sed -r "s/YouTube/you_tube/g"
不起作用,因为无论引号如何,它都将“YouTube”替换为“you_tube”。我可以使用哪个正则表达式来完成任务?
提前谢谢你。
最佳答案
使用 GNU sed:
sed -E "s/('[^']*)YouTube([^']*')/\1you_tube\2/g" file
输出:
This is a YouTube video referenced by the 'movies.you_tube_id' column.
关于bash - sed:仅当包含在引号中时才替换文本中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772986/