sed 用变量替换

sed 用变量替换

我试图从字符串中删除前 n 个字符,但出现以下错误:

line 5: ${ echo $data | sed -r 's/.{ $index0 }//' }: bad substitution

当在 bash 脚本中使用此代码时:

data=${ echo $data | sed -r 's/.{$index}//' }

有什么更正吗?

答案1

出色地,

  1. 命令替换是$( ... ),不是${ ... }。常规括号,而不是花括号。
  2. 你有$index单引号,所以它会不是被外壳扩展。你需要为此加双引号。
  3. $data在 echo 中添加双引号,如果data包含空格或全局字符,则会有所不同
  4. 在 bash 中,您可以使用子字符串扩展data=${data:$index}来从字符串前面删除一些字符。

建议阅读:http://mywiki.wooledge.org/BashGuide

相关内容