【问题标题】:How to strip textfile using csv如何使用 csv 去除文本文件
【发布时间】:2015-01-23 14:52:55
【问题描述】:

由于这个问题非常基本,预计会被否决并关闭:

但是,使用逗号分隔的单词列表查找和替换(删除)文本文档(或等效文本文档)中的单词的最简单方法是什么?我目前的选择是 a) 手动搜索和替换每个单词或 b) 从头开始​​编写一个 c 程序来为我完成这项工作。

例如文本文件包括

apraxic
aprepitant
Apresazide
Apresoline
Apri
apricot
apridae
aprifoliaceae
...

(即由 \n 描述)和包含

的 csv

苹果,杏,四月,...

上面的最终结果是

apraxic
aprepitant
Apresazide
Apresoline
Apri
apridae
aprifoliaceae
...

【问题讨论】:

  • c) 使用更合适的编程语言。即几乎除 c 以外的任何东西
  • 向我们展示您的文件和列表的几行,以及我们完成后的外观。然后告诉我们您使用的操作系统。
  • @MarkSetchell 添加了一些示例文本。操作系统是任何东西(Windows/Ubuntu/Debian/等)。同样,我并不局限于任何特定的文本编辑器或 ide。

标签: csv text replace text-files


【解决方案1】:

类似这样的:

fgrep -v -f <(tr ',' '\n' < verboten) textfile

其中verboten 是包含禁用词列表的文件的名称。 &lt;()进程替换,它使用括号内的结果创建一个伪文件——在这种情况下,我将verboten 文件中的所有逗号转换为换行符。 -v 否定搜索。

这是bash-ism。如果您使用不同的外壳,则需要 2 个步骤:

tr ',' '\n' < verboten > verboten.col    # Make line into column
fgrep -v -f verboten.col textfile

【讨论】:

  • 高兴:-) 确保没有空行,因为它们匹配所有内容。
  • 在 MinGW 中不起作用:sh:意外标记附近的语法错误 `('
  • 好的,您必须分两步完成,因为它是bashism。等一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 2011-02-14
  • 1970-01-01
  • 2016-11-07
  • 2023-01-12
  • 2010-12-02
相关资源
最近更新 更多