sed替换替换花括号${i}-如何停止?
我尝试使用sed将13替换为21:sed替换替换花括号${i}-如何停止?,sed,Sed,我尝试使用sed将13替换为21: echo "for i in {1..5}; do commands for FILE13 > output_${i}; done" | sed 's/13/21/g' 我的输出如下所示: for i in {1..5}; do commands for FILE21 > output_2; done 13被21取代,但另外${i}被2取代 为什么会发生这种情况?如何阻止sed替换mu大括号内容 编辑 如果我的命令如下所示: echo 'for
echo "for i in {1..5}; do commands for FILE13 > output_${i}; done" | sed 's/13/21/g'
我的输出如下所示:
for i in {1..5}; do commands for FILE21 > output_2; done
13被21取代,但另外${i}被2取代
为什么会发生这种情况?如何阻止sed替换mu大括号内容
编辑
如果我的命令如下所示:
echo 'for i in {1..5}; awk'{( do commands)}' FILE13 > output_${i}; done' | sed 's/13/21/g'
我无法将双引号替换为单引号,因为我在意外标记附近遇到bash:syntax错误'`
是否使用\来转义大括号的唯一解决方案?echo的参数是文本字符串吗?然后:
echo "for i in {1..5}; do commands for FILE13 > output_\${i}; done" | sed 's/13/21/g'
echo的参数是文本字符串吗?然后:
echo "for i in {1..5}; do commands for FILE13 > output_\${i}; done" | sed 's/13/21/g'
这不是取代花括号,而是贝壳。将回显字符串的双引号更改为单引号 比较:
$ echo "for i in {1..5}; do commands for FILE13 > output_${i}; done"
for i in {1..5}; do commands for FILE13 > output_; done
$ echo 'for i in {1..5}; do commands for FILE13 > output_${i}; done'
for i in {1..5}; do commands for FILE13 > output_${i}; done
如果要回显的字符串本身包含单引号,请使用双引号并转义$,或直接处理引号:
$ echo "for i in {1..5}; awk'{( do commands)}' FILE13 > output_\${i}; done"
for i in {1..5}; awk'{( do commands)}' FILE13 > output_${i}; done
$ echo 'for i in {1..5}; awk'"'"'{( do commands)}'"'"' FILE13 > output_${i}; done'
for i in {1..5}; awk'{( do commands)}' FILE13 > output_${i}; done
这不是取代花括号,而是贝壳。将回显字符串的双引号更改为单引号 比较:
$ echo "for i in {1..5}; do commands for FILE13 > output_${i}; done"
for i in {1..5}; do commands for FILE13 > output_; done
$ echo 'for i in {1..5}; do commands for FILE13 > output_${i}; done'
for i in {1..5}; do commands for FILE13 > output_${i}; done
如果要回显的字符串本身包含单引号,请使用双引号并转义$,或直接处理引号:
$ echo "for i in {1..5}; awk'{( do commands)}' FILE13 > output_\${i}; done"
for i in {1..5}; awk'{( do commands)}' FILE13 > output_${i}; done
$ echo 'for i in {1..5}; awk'"'"'{( do commands)}'"'"' FILE13 > output_${i}; done'
for i in {1..5}; awk'{( do commands)}' FILE13 > output_${i}; done
不能在单引号字符串中嵌入单引号。尝试:
echo 'for i in {1..5}; awk'"'"'{( do commands)}'"'"' FILE13 > output_${i}; done'
不能在单引号字符串中嵌入单引号。尝试:
echo 'for i in {1..5}; awk'"'"'{( do commands)}'"'"' FILE13 > output_${i}; done'
这听起来像是个XY问题。为什么要编辑shell命令?您是否只需要一个在FILE13和FILE21上迭代的外部for循环?如果这是用于交互式shell,请阅读shell的历史机制。这听起来像是XY问题。为什么要编辑shell命令?您是否只需要一个在FILE13和FILE21上迭代的外部for循环?如果这是用于交互式shell,请阅读shell的历史机制。