【发布时间】:2016-08-17 08:58:19
【问题描述】:
所以,对于我正在开发的游戏,我需要在一些数据文件中替换一些字符串。我可以使用sed 或awk。我需要帮助编写 bash 脚本来替换它,所以这里列出了我想要替换的东西。 (请记住,我将在括号中使用 X 代替数字,此外,对于字符串 1 和 2,我需要替换的字符串后面有一个空格,我也需要替换空格。)
- 将
\\P[x]:的每个实例替换为\\n<\\P[x]>\\pf[x] - 将
\\N[x]:的每个实例替换为\\n<\\N[x]>\\af[x] - 将
"volume":80的每个实例替换为"volume":90 - 将
...的每个实例替换为\\..\\..\\..\\. - 用
"]},{"code":401,"indent":0,"parameters":["替换"]},{"code":401,"indent":0,"parameters":["的每个实例(字符串的开头有一个空格我需要替换,我想把它移到字符串的末尾。)
这是我尝试过的:
sed -e 's/"volume":80/"volume":90/g' -e 's///g' -e 's/\ \"]},{\"code\":401,\"indent\":0,\"parameters\":[\"/\"]},{\"code\":401,\"indent\":0,\"parameters\":[\"\ /g' < ${file} > ${outdir}/${filename}.${extension}
我收到此错误:`sed: -e expression #3, char 109: unterminated s' command
这是我创建的一个脚本,不知道如何让它正常工作:
#!/bin/bash
direct=./1
outdir=./2
mkdir -p $direct
mkdir -p $outdir
for file in ${direct}/*.*; do
filepath=$(basename "$file")
extension="${filepath##*.}"
filename="${filepath%.*}"
strb='"volume":80'
strr='"volume":90'
echo 1 && sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
strb='...'
strr='\\..\\..\\..\\.'
echo 2 && sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
num=0
while [ "$num" -le "99" ]; do
strb='\\P['"$num"']\: '
strr='\\n<\\P['"$num"']>\\pf['"$num"']'
sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
strb='\\N['"$num"']\: '
strr='\\n<\\N['"$num"']>\\af['"$num"']'
sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
num=$(echo $num+1 | bc -l)
done
strb=' "]},{"code":401,"indent":0,"parameters":["'
strr='"]},{"code":401,"indent":0,"parameters":[" '
echo 5 && sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
strb='Move1'
strr='Move'
echo 6 && sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
strb='Move'
strr='Move1'
echo 7 && sed -e "s#\"${strb}\"#\"${strr}\"#g" -i ${file}
echo ${filename}.${extension}
done
在 sed 的第五个实例上,我得到 unterminated s' command
【问题讨论】:
-
这可能有点乏味,但实际上很简单。你查到
sed的替代命令了吗? -
SO 是为编程提供帮助,而不是要求其他人为您编写代码的地方。请使用您尝试过的一些代码、输入和输出示例以及任何相关的错误消息来改进您的问题。
-
@CodeGnome 添加了脚本
-
当你被问到是否查找过 sed 的替代命令时,你轻率地说
nope这种态度和缺乏努力让很多人不愿帮助你,因此遭到了反对和反对票数接近。为什么你说你已经用它写了一个脚本时不费心去研究它?现在可能为时已晚,但如果您再次edit 您的问题包括简洁、可测试的样本输入和预期输出,那么我们将有必要的信息开始尝试帮助您(如果有人仍在查看此问题)。跨度>
标签: string bash awk replace sed