使用bash操作流式传输到文件中的字符串

使用bash操作流式传输到文件中的字符串

我试图将多行管道传输到一个文本文件中,同时按照顺序操作管道传输的字符串

cmd="My string 00"

for i in $(seq -f "%02g" 00 05); \
  do \
  echo $(echo $cmd | sed -e 's|00|$(echo $i)|g') >> outfile.txt ;  \
done

不起作用。输出应如下所示:

My string 00  
My string 01  
My string 02  
My string 03  
My string 04  
My string 05  

但输出是:

My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)

答案1

for i in {00000..00005}; do echo "${i/???/My string }"; done >> outfile.txt

输出到outfile.txt:

My string 00
My string 01
My string 02
My string 03
My string 04
My string 05

答案2

您可以使用printf括号扩展来完成所有操作:

$ printf 'My string %02d\n' {0..5} > outfile.txt

$ cat outfile.txt 
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05

如果出于某种原因你必须生成比您真正想要的更多的填充的输入序列,printf将为您重新格式化:

$ printf 'My string %02d\n' $(seq -f "%05g" 00 05)
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05

相关内容