linux - 使用变量写入文件而不重复

标签 linux bash shell scripting

尝试在 shell 中编写一个函数,该函数采用三个参数 a_text_to_be_matchednew_textfile_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
}

最佳答案

尝试如下:

sed -i "s/(.*)?(${text_to_be_matched})?(.*)?/${new_text}" $file 

关于linux - 使用变量写入文件而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28012892/

相关文章:

linux - 禁止访问 "exec"函数?

linux - 软件包 libsndfile-dev 没有安装候选

c - 没有规则使目标 '%.o'

git - 如何使用一个命令将 git clone 点文件复制到我的主目录中?

bash - 从Shell脚本将结果值从Docker容器中的测试返回到Jenkins CI

linux - 命令行中的for循环运行bash脚本逐行读取文本文件

linux - 如何在 ubuntu 的 .desktop 文件中动态分配家庭用户名?

bash 使用陷阱 SIGCHLD 重新启动子进程?

postgresql - 使用postgres pg_dump命令时转义包含@的密码

bash - 是否有更一致的方式来声明 Bash 变量和函数?