以下命令将查找字符串的所有出现,并删除找到此字符串的文件的内容。
find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l {} \; -exec sed -i '/./d' {} \;
我尝试修改它只是删除找到字符串的行但无法使其工作。
E.g测试文件:
blah blah blah
blah blah blah teststring
teststringblah blah blah
blah blah blah
它会删除第2行和第3行,并将文件保留为行之间没有间隙:
blah blah blah
blah blah blah
答案 0 :(得分:7)
此处不需要grep
sed -i '/teststring/Id' file
删除file
中包含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
答案 1 :(得分:0)
您无法使用标准脚本工具编辑文件。您可以创建一个新文件,然后用新文件替换旧文件:
#get a temporary filename
tmp_file_name=$(mktemp)
grep -v teststring $my_file_name > $tmp_file_name
mv $tmp_file_name $myfile_name