我可以在sed脚本中声明变量/数组吗?

时间:2014-11-07 20:58:04

标签: linux variables awk sed scripting

我想知道我是否可以在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脚本中声明arsed等变量吗?

1 个答案:

答案 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