如何使用sed从另一个文件中删除一个文件中的相同行?

par*_*oid 4 sed text-processing

我有两个文件,一个是另一个的超集。我想从较大的文件中删除较小文件中的相同行。

一种可能的复杂情况是这些行包含反斜杠。

我该怎么做呢?

Raj*_*ish 8

这是我的片段:

remove_lines()
{
    # remove lines from a file 
    #  
    # $1 - source file with patterns of lines to be removed
    # $2 - destination file
    tmpfile=$(mktemp "$(dirname -- "$2")"/XXXXXXXX) &&
    grep -F -f "$1" -v -- "$2" >>"$tmpfile" &&
    mv -- "$tmpfile" "$2" &&
}
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚意识到其中没有sed,但这并不重要,是吗?

  • 您可能希望使用 `mktemp` 来生成临时文件名,而不是使用 `tmp-$(uuidgen)` 或类似的技巧。 (3认同)