[英]How do I use a bash variable within sed command in this instance?
我想在文件的每行开头(其中有50个)插入随机数。
for i in `seq 1 50`; do
r=$RANDOM
sed -e '{$i}s/^/$r,/' file1 > file2
done
我如何让i变量在该sed命令中工作?
如果您使用双引号而不是单引号,它将扩展bash变量,但是您还必须转义任何bash特殊字符
你可以做
for i in `seq 1 50`; do
r=$RANDOM
sed -e "${i}s/^/$r,/" file1 > file2
done
实际上,您甚至可以不使用中间变量
for ((i=1; i<51; i++)); do
sed -e "${i}s/^/$RANDOM,/" file1 > file2
done
但是请注意,file2实际上仅包含您所做的最后一次编辑,因为您每次都将其覆盖。
如果要在file
进行所有编辑,则可以使用-i
标志。 使用GNU版本,您可以执行
for ((i=1; i<51; i++)); do
sed -i -e "${i}s/^/$RANDOM,/" file1
done
那么file1将包含所有更改。
此外,你可以用一个命令做不运行sed
对于每个awk
像
awk '{print int(rand() * 65536) ", " $0}' file1 > file2
它将给出一个介于0到65536之间的随机整数,您可以根据需要随意修改该整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.