以下命令将查找字符串的所有出现并删除找到此字符串的文件的内容.
find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l {} \; -exec sed -i '/./d' {} \;
我已经尝试修改它只是删除找到字符串的行但无法使其工作.
例如测试文件:
blah blah blah
blah blah blah teststring
teststringblah blah blah
blah blah blah
它将删除第2行和第3行,并将文件保留为行之间没有间隙:
blah blah blah
blah blah blah
解决方法:
这里不需要grep sed -i’/ teststring / Id’文件删除文件中包含teststring(不区分大小写)的所有行,所以只需将它与find结合使用:
find . -maxdepth 1 -xdev -type f -exec sed -i '/teststring/Id' {} \;
sed演示:
$cat file
blah blah blah
blah blah blah teststring
teststringblah blah blah
blah blah blah
$sed '/teststring/Id' file
blah blah blah
blah blah blah
标签:linux,grep,sed,find
来源: https://codeday.me/bug/20190729/1569959.html
以下命令将查找字符串的所有出现并删除找到此字符串的文件的内容.find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l {} \; -exec sed -i '/./d' {} \;我已经尝试修改它只是删除找到字符串的行但无法使其工作.例如测试文件:blah blah blahblah blah blah teststring...
Linux
使用
grep
删除
两个文件相同部分
首先描述一下这个问题:比如两个文件file1和file2,
删除
两个文件中共同的部分,留下两个文件中独自有的部分
1、已知俩文件
内容
[root@
grep
~]# cat 1.txt
[root@
grep
~]# cat 2.txt
将函数或者变量替换定义在一个文件中,如函数可以定义在.fun文件中,然后在.sh脚本中,用“."加载,然后直接调用函数,如果:db.fun。定义函数可带参数,函数中的 $1,$2,$3…… 表示接受的第一个,第二个,第三个……参数。如:create_station_db 20 11 $1就是20 $2就是 11.
grep
'xxx' filename1 filename2 filename3 ...或者通配符文件也可 *.log
3、
查找
内容
在文件中的
行
数,可以使用参数-n,例:
grep
-n 'xxx' filename
忽略大小写问题,可以使用参数“-i”
文件
内容
查找
不匹配指定字符串的
行
,可以使用参数“-v”
4、
删除
文件某一
行
,例:
sed
-i "nd" fil.