sed与字面值字符串(sed:没有输入文件)



这应该很简单:我想针对文本字符串运行sed,而不是针对输入文件。如果您想知道为什么,它是为了编辑存储在变量中的值,而不一定是文本数据。

当我这样做的时候:

cat getGCC_MSISDN.tsk | sed -i 's/TEMP_MSISDN/'$1'/g' | java_gcc_soap_any.ksh

正确的命令应该是什么?我想让它从文件中获取我的MSIDN。

您可以尝试如下操作:

printf '%s' "$s" | sed "s/TEMP_MSISDN/$1/g" | java_gcc_soap_any.ksh

但这是非常脆弱的。例如,如果$1包含/,则此操作将失败。你可以试着用这样的东西来解决这个问题:

printf '%s' "$s" | sed "s@TEMP_MSISDN@$1@g" | java_gcc_soap_any.ksh

但你只是用一个坏符号换了另一个,并没有真正使解决方案健壮。如果你正在使用bash,你也可以尝试这样做:

printf '%s' "${s/TEMP_MSISDN/$1}" | java_gcc_soap_any.ksh

使用printf打印文本字符串

printf '%sn' 'some_literal_string' | sed 's/TEMP_MSISDN/'$1'/g' | java_gcc_soap_any.ksh

相关内容

  • 没有找到相关文章

最新更新