【问题标题】:Compare two files in linux and output the result in one of the files比较linux中的两个文件并将结果输出到其中一个文件中
【发布时间】:2021-12-01 00:54:56
【问题描述】:

我有两个文件

file1.txt

  a
  b
  c

file2.txt

  a
  b
  c
  d

现在使用 grep 命令

grep -vf file1.txt file2.txt 

会给我输出 ->

d

但是使用它我无法将此结果保存在任何文件file1file2 中。我想简单地在任何一个文件中覆盖这个结果。 如何使用 grep 来完成?

【问题讨论】:

标签: unix terminal grep


【解决方案1】:

但是使用这个我不能将这个结果保存在任何一个文件 file1 或 文件 2。我想简单地在任何一个文件中覆盖这个结果。 如何使用 grep 完成此操作

您可以将输出重定向到这样的文件:

grep -vf file1.txt file2.txt > tmp_file && mv tmp_file file1.txt

请注意,使用 grep 您不能使用与输出文件相同的输入文件。为了解决这个问题,您创建一个临时文件,然后将其重命名为 file1(2).txt

【讨论】:

    【解决方案2】:

    如果sed 是一个选项,您可以删除循环中的匹配项并保存在原地

    while IFS= read -r line; do
        sed -i "/$line/d" file2.txt
    done < file1.txt
    

    输出

    $ cat file2.txt
    d
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2015-01-07
      • 2021-10-19
      相关资源
      最近更新 更多