xargs-我在查找中替换了str -exec sed

时间:2018-11-06 00:36:25

标签: bash sed find xargs

我在使用Bash 4.4.23的GNU / Linux系统上,并且我的文件带有一些Bash变量:

例如。

export VARONE="var1"
export VARTWO="var2"
...

在其他文件中,我必须将${VARIABLE}替换为{{VARIABLE}},扩展名为“ templates”文件夹下的“ .template”。

我尝试执行此命令:

cat varfile \
  | grep export \
  | awk -F '=' '{print $1}' \
  | awk '{print $2}' \
  | xargs -I var -- \
      find templates -type f -iname "*.template" \
        -exec sed 's/${var}/{{var}}/g' {} \;

但是我没有运气:(似乎sed与该LHS不匹配,实际上它会将原始文件打印为输出。

有人可以解释上面的命令出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

唯一的问题似乎是缺少def get_model(model): estimator = tf.keras.estimator.model_to_estimator(model) def serving(): inputs = { 'reviews': tf.placeholder(shape=[None, 100], dtype='float32') } preproc = inputs.copy() return tf.estimator.export.ServingInputReceiver(preproc, inputs) estimator.export_savedmodel('./test_export', serving) 标志和sed的未转义-i

这是带有上述修复程序的更简单,经过测试的初始管道:

$

为了保证,如果变量每行出现多次,我添加了sed -nE '/^export /{s///;s/([^=]+).*/\1/;p;}' varfile | xargs -I var -- find templates -name '*.template' -exec sed -i '' 's/\${var}/{{var}}/g' {} + 标志。