在bash中更改字符串类型变量的分隔符

时间:2017-04-10 11:29:54

标签: bash shell while-loop sh

我的任务很小。

我应该写:

data="duke,rock,hulk,donovan,john"

在下一个变量中,我应该更改第一个变量的分隔符。

data2="duke|rock|hulk|donovan|john"

在bash上执行此操作的正确方法是什么?

这是脚本的一小部分,我该做什么。

例如,我使用构造" WHILE-GETOPS-CASE"在参数中使用用户名来排除它们。

ls /home/ | egrep -v $data2

2 个答案:

答案 0 :(得分:6)

您可以使用扩展轻松替换单个字符:

data="duke,rock,hulk,donovan,john"
data2=${data//,/|}
echo "$data2"

分解语法:

  • ${data表示“根据变量data中找到的值展开;
  • //表示“搜索所有出现的”;
  • 单独的/表示“替换为以下内容”。

请注意,某些字符可能需要转义,但不能转义为逗号和竖线。

然后你可以像这样过滤结果:

ls /home/ | egrep -v "$data2"

答案 1 :(得分:1)

另一种非常类似的方法是使用tr(翻译或删除字符):

data="duke,rock,hulk,donovan,john"
data2=$(echo $data | tr ',' '|')
echo "$data2"