求一个shell脚本:实现判断一个文件是否包含某内容,如果包含,刚删除所在的行(或替换该行);如果不包含该内容,则添加。新手求详细注释,谢谢大神了!
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,那替换进去的内容是哪个?
追答不是,你提问说是可以删除或替换,但是你又没提供要替换成为什么,所以我就直接删除,那句话是删除命令。
麻烦及时采纳下,多谢了!