【问题标题】:sed to search for multiple words and remove those linessed 搜索多个单词并删除这些行
【发布时间】:2014-07-24 21:59:44
【问题描述】:

我有一个超过 50000 行的主文件,我的要求是从实际文件中删除大约 20000 行。为此,我使用了 grep -vE 命令,该命令显示错误,因为参数太多。我正在使用 sed 命令删除那些使用 for 循环的命令。但是由于要初始化 20000 个 sed 命令,因此需要花费大量时间来删除。我需要帮助以尽快完成。

for i in `cat 20000-words.txt`; do 
    sed -i -e "/$i/ d" 50000-lines.txt
done

【问题讨论】:

  • @Networker 我觉得没必要。
  • fgrep -vf to_exlude.txt original.txt
  • @SriharshaKalluru 这些词是用换行符分隔的吗?
  • @konsolebox 是的,是的。
  • 这里和Unix Stack Exchange上同时提出了这个问题

标签: linux shell sed


【解决方案1】:

使用grep-f 选项将单词列表用作模式列表:

grep -v -f 20000-words.txt 50000-lines.txt

您可能还需要-w-F 开关来分别匹配整个单词或禁用单词的正则表达式解释。

【讨论】:

  • 如果两个文件都已排序(似乎它们可能是某种字典或单词列表,所以它们可能是),comm -13 20000-words.txt 50000-lines.txt 也是一个合理的选择(除非我误解了,而50000-lines.txt 文件实际上每行有多个单词 - 这有点不清楚)。
猜你喜欢
  • 2014-12-11
  • 2017-12-03
  • 2020-07-29
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2021-02-15
  • 2021-07-25
  • 1970-01-01
相关资源
最近更新 更多