比较两个文件并将结果打印到新文本文件中

比较两个文件并将结果打印到新文本文件中

我想将计算机中的软件包列表与我拥有的授权列表进行比较。我该怎么做?以下方法可行吗?

cd /home
touch authorizedlist.txt
(list contents) >> authorizedllist.txt
touch currentlist.txt
dpkg -l | cut -d ' ' -f3 | less >> currentlist.txt
touch difflist.txt
diff authorizedlist.txt currentlist.txt >> difflist.txt

有没有办法在一个命令中创建一个新的文本文件并向其中添加内容,而不是先触摸然后输入文本?另外,有没有办法只打印不需要来自当前列表而不是其中缺少什么?

答案1

是的。

  • touch将给定文件的修改时间戳设置为“现在”。如果给定文件尚不存在,则创建该文件。这是创建空文件的常用方法。

  • 重定向>>附加输出到给定文件。touch如果文件尚不存在,则创建该文件。但请记住,它附加数据保存到现有文件中。

  • 重定向>覆写将前一个命令的输出写入给定文件。如果文件尚不存在,则创建该文件。如果文件已存在,则将其截断(即清除或清空),然后将输出写入该文件。

  • less是所谓的寻呼机。也就是说:它旨在用于交互式使用,因此您可以浏览较大的文件并使用spaceand b(除其他外)在文件或命令输出中前进和后退。如果您无论如何都将命令的输出重定向到文件,则可以(并且应该)省略该less调用。

放在一起:

cd /home
(list contents) > authorizedlist.txt
dpkg -l | cut -d ' ' -f3 > currentlist.txt
diff authorizedlist.txt currentlist.txt > difflist.txt

相关内容