繁体   English   中英

在这种情况下,如何在sed命令中使用bash变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM