SED替换文本的文本变量
问题描述:
我们有一个ASCII艺术像下面SED替换文本的文本变量
ART _____
ART | __ \
ART | |__) |__ ___ _ __
ART | ___/ _ \/ _ \ '__|
ART | | | __/ __/ |
ART |_| \___|\___|_|
ART
ART
我们有一个变量$ {艺术} =“123456”,想用$ {艺术}来代替艺术,所以该系统将打印标准输出这样
123456 _____
123456 | __ \
123456 | |__) |__ ___ _ __
123456 | ___/ _ \/ _ \ '__|
123456 | | | __/ __/ |
123456 |_| \___|\___|_|
123456
123456
我曾经尝试这样做,因为这表明后
sed -i "s/ART/${art}/g" ascii-art
以下错误信息显示出来:
sed: -e expression #1, char 6: unterminated `s' command
我在Linux ip-10-22-37-149 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux (Amazon EC2)
的sed --version回报:
GNU sed version 4.2.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
有什么想法?
谢谢!
答
如果$art
包含/
,则可能需要反斜杠或使用不同的分隔符。
或者使用Perl:
perl -i -pe 's/ART/$ENV{art}/g' -- file
时$art
出口这将工作,如果不是,只是它导出的命令:
art=$art perl ...
工作正常,我。试试'sed -i“”“s/ART/$ {art}/g”ascii-art' - 注意-i后的额外引号。 – SiKing
如果'$ art'的值包含'/'字符,则会发生这种情况。但'123456'不应该是一个问题。 – Barmar
@SiKing'-i'和'-i“”'没有区别。一个空字符串被shell简单地删除。 – Barmar