删除值周围的字符集

时间:2013-07-28 06:27:10

标签: bash shell scripting sed awk

我正在将API调用的输出重定向到文件

然而,我总是得到围绕我需要的值的以下字符

domainid='^[[39;49;00m^[[33;01m75307d12-e3f4-4a96-ac23-e2a9439f8299^[[39;49;00m'

期望的输出

domainid='75307d12-e3f4-4a96-ac23-e2a9439f8299'

我真的不知道如何清理输出并让它看起来像上面那样。

任何建议都将受到高度赞赏。

谢谢

2 个答案:

答案 0 :(得分:2)

这些是ANSI控制字符或转义序列,它们通常用于为输出添加颜色,下划线等。

首先,检查您的API命令行工具是否支持无颜色模式。这样可以解决您的问题。

除此之外,请尝试this Server Fault answer,它有一个命令,可以使用sed清除文本文件中的ANSI序列。

答案 1 :(得分:1)

您可以通过仅使用要保留的子匹配替换该行来删除不需要的字符:

... | sed -r "s/(domainid=).*([0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}).*/\1'\2'/i"