【问题标题】:use double quotes inside sed在 sed 中使用双引号
【发布时间】:2016-04-15 08:14:37
【问题描述】:

我有一个 sed 命令来更改 python 文件中的某些内容:

sed -i 's|encoding = "ascii"|encoding = "utf-8"|g' /usr/local/lib/python2.7/site.py

所以我想用“utf-8”替换“ascii”,但这不起作用。 谁能解释为什么它不起作用以及我需要更改什么?

>> import sys
>> reload(sys)
>> sys.getdefaultencoding();
--> "ascii"

Run my command

>> import sys
>> reload(sys)
>> sys.getdefaultencoding();
--> "ascii"

【问题讨论】:

  • 这对我来说很好。发布一个示例文件,以便我们仔细检查。
  • 文件的编码不会因为改变一行而改变。
  • @fedorqui 这是用于更改已安装 python 环境 (/usr/local/lib/python-verison/sites.py) 的默认编码。我们想使用 dockerfile 更改它以进行一些测试
  • 不确定你想在这里做什么,MaxC。为什么改变一段文件的内容会改变它的编码?
  • @fedorqui 这是一个python的配置文件。当您在配置文件中更改此设置时,python 的默认编码类型将更改:stackoverflow.com/questions/36623471/…

标签: sed


【解决方案1】:

你是在安装 Python 之后才这样做的,不是吗?您可以发布您的 dockerfile 以尝试重现您的问题吗?您是否尝试执行 bash shell 来测试该文件是否按预期更改?

这是我的工作 Dockerfile 示例:

FROM ubuntu:14.04
MAINTAINER github/ojgarciab

# Use the "noninteractive" debconf frontend
ENV DEBIAN_FRONTEND noninteractive

# Add python
RUN apt-get update && apt-get install -y python && \
  apt-get clean

RUN sed -i 's|encoding = "ascii"|encoding = "utf-8"|g' /usr/lib/python2.7/site.py

ADD ejemplo.py /ejemplo.py
CMD [ "python", "/ejemplo.py" ]

在使用sed 命令之前,输出为:

redstar@nvidiastar:~$ docker run -t python
ascii

现在输出是:

redstar@nvidiastar:~$ docker run -t python
utf-8

ejemplo.py脚本的内容:

import sys
reload(sys)
print sys.getdefaultencoding();

请注意,使用的路径是/usr/lib/python2.7/site.py,而不是/usr/local/lib/python2.7/site.py。

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 2017-09-13
    • 2015-11-06
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多