求一个shell脚本:实现判断一个文件是否包含某内容,如果包含,刚删除所在的行(或替换该行);如果

求一个shell脚本:实现判断一个文件是否包含某内容,如果包含,刚删除所在的行(或替换该行);如果不包含该内容,则添加。新手求详细注释,谢谢大神了!

#!/bin/bash
read -p "请输入目的内容:"  varchar
grep "$varchar" filename && sed -i "/$varchar/d" filename || echo $varchar >>filename
exit

 

详细解释:

第1行:申明/解释脚本用的是bash

第2行:用read读取你输入的内容,然后复制给varchar

第3行:在文件filename中查找刚刚你输入的内容,&&表示如果找到了内容就执行后面的命令,||表示如果没找到则执行后面的内容;那么完整解释就是,当前面查找到你输入的内容时,则执行sed -i "***/d" 删除命令,而没有查找到则执行||后面的追加内容命令。

 第4行:退出脚本

 

Ps:filename需要改成你说的那个文件的名字及路径。

追问

能给注释下么?谢谢了

#!/bin/bash

read -p "请输入目的内容:" varchar(这里是在赋值变量吗?)

grep "$varchar" filename (搜索文本)&& (&什么作用?跟前面有关联没有?)sed -i "/$varchar/d" filename(看不懂。。) ||(俩竖线什么意思?) echo $varchar >> filename

追答

你有没有仔细看我的解释啊,如果解释也看不懂你得好好学习下linux基本命令了!

 

    #!/bin/bash   #申明使用bash

    read -p "请输入目的内容:"  varchar   #等待用户输入内容,然后把内容复制给varchar

    grep "$varchar" filename  # 在filename文件中查找$varchar所包含的内容

    && sed -i "/$varchar/d" filename    #表示如果查找到了$varchar内容,就执行sed替换命令

    || echo $varchar >>filename    #表示如果没查找到才会执行后面的echo追加命令

 

    3、4、5必须连接在一起使用,形成逻辑判断 →查找内容 && 若找到了执行 || 若未找到才执行

    建议你到电脑上打开这个网页看,手机是看不到完整的内容的。

追问

sed -i "/$varchar/d" filename 原内容是$varchar,那替换进去的内容是哪个?

追答

不是,你提问说是可以删除或替换,但是你又没提供要替换成为什么,所以我就直接删除,那句话是删除命令。
麻烦及时采纳下,多谢了!

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网