bash中的子串替换

Mat*_*ari 6 string bash replace tr str-replace

我今天的问题是用这样的字符串替换 - > 6427//6422 6429//6423 6428//6421

每个人//都有,.我尝试了不同的命令:

  • finalString=${startingString//[//]/,} 不起作用
  • fileTemp=$(echo -e "$line\n" | tr "//" "," 做这样的双重替换:

    hello//world ---> hello,,world

有人知道如何做到这一点?

anu*_*ava 3

您可以使用 BASH 字符串操作(需要使用 转义/\/

s='6427//6422 6429//6423 6428//6421'
echo "${s//\/\//,}"
6427,6422 6429,6423 6428,6421
Run Code Online (Sandbox Code Playgroud)

类似地使用 awk:

awk -F '//' -v OFS=, '{$1=$1}1' <<< "$s"
6427,6422 6429,6423 6428,6421
Run Code Online (Sandbox Code Playgroud)

PS: tr不能在这里使用,因为tr将输入中的每个字符转换为输出中的另一个字符,而这里您正在处理 2 个字符//