我想知道我是否可以在sed
脚本中声明变量。即作为一个翻译,sed
有一个变量的概念,如C,awk,python ......
我不谈论将shell变量传递给sed脚本。
E.g。以下awk
脚本应该通过用序列中的Tom Dick或Harry替换它们来掩盖真实客户的名称。
awk -F: '
BEGIN{ ar[1]='Tom'; ar[2]='Dick'; ar[3]='Harry' }
/Name:/ {
print $1 ":" ar[i]
if (i == 3)
i = 1
else
i = i + 1;
}
' customers.txt
我可以在i
脚本中声明ar
或sed
等变量吗?
答案 0 :(得分:1)
就像评论者说的那样,有一个称为保持空间的基本结构可以堆积在你的数据上并将其拉下来,如果你使用带有case语句的Bash函数或者你想要一些直观的东西会更容易你可以只使用shell扩展,如果你不需要按顺序迭代,你可以使用$ RANDOM:
sed "s/Name:.*/Name: $([[ $(($RANDOM%3)) -eq 0 ]] && (echo -n "TOM") || ([[ $(($RANDOM%3)) -eq 1 ]] && echo "DICK") || echo "HARRY")/" customers.txt