通过终端使用 grep 或其他任何命令删除文本文件中嵌入的字符串

通过终端使用 grep 或其他任何命令删除文本文件中嵌入的字符串

我有一个文本文件,想从每行文本中删除“/d0/”、“/d1/”...“/d5/”。我知道我可以用“/d*/”来 ls 文件。我想是的,grep -vE '//d*// filename > filename 或者我可以通过远程服务器创建文件名的文本文件,ls但它会在文本文件中的文件名上添加扩展名。任何帮助都将不胜感激。谢谢。

答案1

不要做

anycommand filename > filename

shell 在启动命令之前处理重定向。> file重定向将首先截断文件,使其大小为 0 字节。然后,当命令启动时,它有一个空文件可供使用。

sponge包中的命令moreutils就是为了这个目的而存在的:

anycommand filename | sponge filename

要回答你的问题,你需要使用它sed来编辑你的文件

sed -i 's,/d[0-5]/,,' filename

sed 的-i标志将把更改保存回相同的文件名。

相关内容