gpt4 book ai didi

Linux sed 命令 - 使用带反斜杠的变量

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:28 28 4
gpt4 key购买 nike

我正在尝试替换文件中的字符串。我必须使用变量,因为我必须在很多行中执行此操作。我如何转义反斜杠?

文本.txt:

1234567#Hello World#Hello I\u0027m Scott

脚本:

#!/bin/bash
FOLDERID=`cat text.txt | cut -d# -f1` # example: 12345
oldstring=`cat text.txt | cut -d# -f2` # example: "Hello World"
newstring=`cat text.txt | cut -d# -f3` # example: "Hello I\u0027m Scott"
sed -i "s/${oldstring}/${newstring}/g" $FOLDERID/myfile.txt

sed 后 cat myfile.txt

Hello I0027m Scott

如何转义反斜杠?我只知道如何转义斜杠,其工作方式如下:

newstring=Hello I/u0027m Scott
newstring=${newstring//\//\\\/}
echo ${newstring} # => Hello I\/u0027m Scott

最佳答案

试试这个:

cd /tmp
mkdir -p 1234567
echo Hello World >1234567/myfile.txt
echo '1234567#Hello World#Hello I\u0027m Scott' >text.txt

好吧,那么:

IFS=\# read -r FOLDERID oldstring newstring <text.txt 
sed "s/${oldstring}/${newstring//\\/\\\\}/g" -i $FOLDERID/myfile.txt
cat 1234567/myfile.txt
Hello I\u0027m Scott

关于Linux sed 命令 - 使用带反斜杠的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40284781/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com