2017-09-27 148 views
0

我想在使用shell脚本的特定文本之后插入一个随机数。我可以生成一个随机数(32个字符):在一个文件?:如何在使用sed的文本之后插入随机数

cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 32 | head -n 1 

如何插入文本后,这个随机数(32_char_random_number)(例如,“字母”

sed '/\balphabet \b/& 32_char_random_number/' file 
+0

[MCVE(https://stackoverflow.com/help/mcve)请 – Thor

回答

1

假定您兰特号码分配给$char_random_number

char_random_number=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 32 | head -n 1) 

而且你可以使用双引号来访问变量,

sed "s/\(alphabet\)/\1$char_random_number/g" file 
+0

运行时,你或许应该加上-r的sed –

+0

与-r选项,扩展正则表达式允许的。但不需要添加我的答案。 :) – CWLiu

+0

它会替换\ 1没有-r? –

0

稳健AWK解决方案:

样品input.txt内容:

Lorem ipsum dolor alphabet sit amet, consectetuer adipiscing elit alphabet. Aenean commodo ligula eget dolor. 
Aenean massa. Cum sociis natoque penatibus et alphabet magnis dis parturient montes, nascetur ridiculus mus. 
Donec quam felis, alphabet ultricies nec, pellentesque eu, alphabet pretium quis, sem. Nulla consequat massa quis enim. 
Donec pede justo, fringilla no alphabet vel, aliquet nec, alphabet vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 
Nullam dictum felis eu pede alphabet mollis pretium. 
Integer tincidunt, alphabet. Cras dapibus. 

的工作:

rnum=$(< /dev/urandom tr -dc [[:alnum:]] | head -c 32) 
awk -v rnum="$rnum" '{ gsub(/\<alphabet\>/,"& "rnum) }1' 

输出:

Lorem ipsum dolor alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 sit amet, consectetuer adipiscing elit alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5. Aenean commodo ligula eget dolor. 
Aenean massa. Cum sociis natoque penatibus et alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 magnis dis parturient montes, nascetur ridiculus mus. 
Donec quam felis, alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 ultricies nec, pellentesque eu, alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 pretium quis, sem. Nulla consequat massa quis enim. 
Donec pede justo, fringilla no alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 vel, aliquet nec, alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 
Nullam dictum felis eu pede alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5 mollis pretium. 
Integer tincidunt, alphabet g9vgamG[slhPKJgOxqphM[KFOdL1qDo5. Cras dapibus. 
+0

谢谢,明天再确认。 – AP70

相关问题