我知道如何使用regex模式匹配文本,但不知道如何操作它们。
我使用grep来匹配和提取文本文件中的行,但我想从文本中删除这些行。如何在不编写python或bash shell脚本的情况下实现此目的?
我在Google上搜索过,建议使用sed,但我是新手,不知道它是如何运作的。
有人能指出我正确的方向还是帮我实现这个目标?
答案 0 :(得分:2)
-v
的{{1}}选项会反转搜索,仅报告与该模式不匹配的行。
由于您知道如何使用grep
查找要删除的行,因此使用grep
相同的模式将为您提供所有要保留的行。您可以将其写入临时文件,然后将临时文件复制或移动到原始文件上。
grep -v
您也可以使用grep -v pattern original.file > tmp.file
mv tmp.file original.file
,如shellfish' answer所示。
sed
解决方案有多种可能的改进,但对于大多数人来说,显示的内容或多或少是足够的(使用每进程中间文件名是个好主意,最好用随机名称,例如grep
命令给你。您可以添加代码以删除中断上的中间文件;向后移动时抑制中断;如果原始文件有多个硬链接或是符号链接,请使用复制和删除而不是移动;等mktemp
命令或多或少地为你解决了这些问题,但它没有认识到多个硬链接或符号链接。
答案 1 :(得分:1)