【问题标题】:Bash variable in sed commandsed 命令中的 Bash 变量
【发布时间】:2012-06-26 14:01:12
【问题描述】:

我需要根据文件名给多个文件递归添加一个header。

所以我试过了:

for i in *file 
do     
sed -i '1 i \A;B;C;D;E;F;G;H;${i%??}' a_${i} > header_a_${i}
done

问题是反映文件名称的变量没有扩展,并且在标题中我有 ${i%??} 而不是名称文件的一部分(%?? 是删除一些结尾字符)。

任何帮助都会很棒。

【问题讨论】:

  • 完全欺骗12

标签: bash sed expand


【解决方案1】:

使用双引号:

    sed '1 i\
A;B;C;D;E;F;G;H;'"${i%??}" a_${i} > header_a_${i}

使用 -i 和重定向输出没有任何意义,所以我省略了 -i。另外,我在插入命令之后添加了一个转义的换行符。有些 sed 不需要换行符,但很多都需要。但是,为此使用 sed 似乎很奇怪。相反,只需这样做:

for i in *file; do     
  { echo "A;B;C;D;E;F;G;H;${i%??}"; cat a_${i}; } > header_a_${i}
done

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 2011-04-28
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多