首页 > 解决方案 > 如何使用 sed 将 u'sometext' 替换为 'sometext'

问题描述

我有一个包含文本的文件,我只是想从所有实例中去掉前导 uu'sometext'以便它离开'sometext'。我一直无法弄清楚如何让 sed 匹配u'并替换为'.

我虽然可以使用 Sed 命令:

echo ['a', u'update for microsoft office 2013 (kb4022166) 32-bit edition', 'unknown', 'null'] | sed "s/u'/'/g"

输出:

[a, uupdate for microsoft office 2013 (kb4022166) 32-bit edition, unknown, null]

我想要什么:

['a', 'update for microsoft office 2013 (kb4022166) 32-bit edition', 'unknown', 'null']

文件中内容的更多示例:

"[u'cpe:/o:microsoft:windows_7::sp1:x64-enterprise', u'cpe:/a:adobe:acrobat:11.0.19']"

我想拥有的:

"['cpe:/o:microsoft:windows_7::sp1:x64-enterprise', 'cpe:/a:adobe:acrobat:11.0.19']"

标签: regexlinuxsedcommand-line

解决方案


如果可能的话,试试这样的东西:

echo "['a', u'update for microsoft office 2013 (kb4022166) 32-bit edition', 'unknown', 'null']" | sed "s/u'/'/g"

输出:

['a', 'microsoft office 2013 (kb4022166) 32 位版本的更新', '未知', 'null']

似乎它没有很好地处理完整的字符串,而是假设它是几个字符串。


推荐阅读