尝试在shell中编写一个函数,它接受三个参数a_text_to_be_matched
,new_text
和file_name
。如果找到text_to_be_matched,那么整行将被new_text
替换,否则它只是回显文件中的new_text
。
以下是我尝试过的代码,但是当$ to_write中间有空格时会中断。
function write_once(){
to_grep="$1";
to_write="$2";
file="$3";
grep $to_grep $file;
if [ $? -eq 0 ]; then
sed -i '/'"$to_grep"'/c\'$"to_write" $file;
else
echo "$to_write" >> "$file";
fi
}
答案 0 :(得分:0)
尝试类似:
sed -i "s/(.*)?(${text_to_be_matched})?(.*)?/${new_text}" $file