用于对目录中多个文件的内容进行排序的脚本

Bol*_*lie 3 command-line bash scripts

美好的一天,我每个月都要收集某些人的浏览历史记录,而且我是一个完全的 linux noob。我想首先sort网站然后运行一个uniq -u. 我使用的程序的输出看起来像这样 -

==================================================
URL               : http://example.com/
==================================================
==================================================
URL               : http://example.com/en
==================================================
==================================================
Run Code Online (Sandbox Code Playgroud)

以下是有关这30个文件夹中/history名为例如bob.txttim.txt等是否有可能使一个脚本,在排序中的所有目录中的文件的内容,删除所有的=迹象,删除重复和在一个新的文件保存结果例如bob.doctim.doc

目前我正在手动运行 sort bob.txt | uniq -u > bob.doc

des*_*ert 7

这有效,至少对于您给出的示例:

for i in *.txt; do
  sed '/=/d;s/URL *: //' "$i" |
  sort -u > "${i%%.txt}".doc
done
Run Code Online (Sandbox Code Playgroud)

说明

  • for i in *.txt; do … done– 遍历.txt当前目录中的每个文件
  • sed '/=/d;s/URL *: //'– 删除以 开头的每一行=,删除每一行 URL 之前的内容
  • sort -u – 仅排序和输出相等运行的第一个
  • > "${i%%.txt}".doc– 将输出重定向到例如bob.doc输入文件bob.txt(使用参数扩展