我今天的问题是用这样的字符串替换 - > 6427//6422 6429//6423 6428//6421
每//
个,
。我尝试了不同的命令:
finalString=${startingString//[//]/,}
无法正常工作 fileTemp=$(echo -e "$line\n" | tr "//" ","
执行双重替换:
hello//world
---> hello,,world
有人知道如何做到这一点吗?
答案 0 :(得分:3)
您可以使用BASH字符串操作(需要使用/
转义\/
):
s='6427//6422 6429//6423 6428//6421'
echo "${s//\/\//,}"
6427,6422 6429,6423 6428,6421
同样使用awk:
awk -F '//' -v OFS=, '{$1=$1}1' <<< "$s"
6427,6422 6429,6423 6428,6421
PS: tr
无法在此处使用,因为tr
会将输入中的每个字符转换为输出中的另一个字符,此处为&#39 ;处理2个字符//
。
答案 1 :(得分:1)
您可以将sed用作
$ echo "6427//6422 6429//6423 6428//6421" | sed 's#//#,#g'
6427,6422 6429,6423 6428,6421
答案 2 :(得分:1)
您也可以尝试这样的sed命令
sed 's#/\{2,2\}#,#g'
找到double&#34; /&#34;并用&#34;,&#34;
替换实施例
echo "6427//6422 6429//6423 6428//6421"| sed 's#/\{2,2\}#,#g'
结果
6427,6422 6429,6423 6428,6421