我有一个包含大量数据的变量。
text = "ABCDEFGHIJK"
file = garbage.txt //iiuhdsfiuhdsihf]sdiuhdfoidsoijsf
我想做的是用文本替换文件中的charachter。我已经尝试过使用sed,但我一直遇到奇怪的错误。
输出应该是://iiuhdsfiuhdsihfABCDEFGHIJKsdiuhdfoidsoijsf
答案 0 :(得分:0)
只需要在正则表达式中使用]
转义\
字符:
text="ABCDEFGHIJK"
sed "s/\(.*\)\]\(.*\)/\1$text\2/" file > file.changed
或者,对于就地编辑:
sed -i "s/\(.*\)\]\(.*\)/\1$text\2/" file
测试:
sed "s/\(.*\)\]\(.*\)/\1$text\2/" <<< "iiuhdsfiuhdsihf]sdiuhdfoidsoijsf"
# output => iiuhdsfiuhdsihfABCDEFGHIJKsdiuhdfoidsoijsf
答案 1 :(得分:0)
在你的osx中总会有bash方式:
filevar=$(cat file)
echo "${filevar/]/$text}" #to replace first occurence
OR
echo "${filevar//]/$text}" #to replace all occurences
在我的bash中,我甚至不必逃避]
。
顺便说一句,简单的sed不起作用?
$ a="AA"
$ echo "garbage.txt //iiuhdsfiuhdsihf]sdiuhdfoidsoijsf" |sed "s/]/$a/g"
garbage.txt //iiuhdsfiuhdsihfAAsdiuhdfoidsoijsf