如何使用sed在文本后插入随机数

时间:2017-09-27 01:16:34

标签: random sed

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

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 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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.
相关问题