循环 sed 以从文本文件中的字符串列表中删除带有字符串的行

0 sed text-processing

我有这个 sed 脚本,当我的 OTU 表中找到文本文件中列出的物种时,我正在删除 OTU 表中的整行。

我现在拥有但不起作用的脚本如下,但我无法使其工作。无论如何,如果您能尽快帮助我,将不胜感激。

(阅读每一行,在我的表中搜索并删除行,infile)

for i in $(cat /my/path/species.txt); do 
    sed -i '/"$i"/d' /my/path/ITS.OTU.table.tsv
done
Run Code Online (Sandbox Code Playgroud)

非常感谢

Kus*_*nda 5

grep -v -xF -f /my/path/species.txt /my/path/ITS.OTU.table.tsv >/my/path/ITS.OTU.table.tsv.new
Run Code Online (Sandbox Code Playgroud)

这会写/my/path/ITS.OTU.table.tsv.new. 它的内容将是原始文件中与/my/path/species.txt.

这些-xF选项强制字符串相同的全行匹配,并-f filename从给定文件中读取要匹配的行。在-v这样只有线逆转了比赛的感觉匹配返回。

如果您需要放宽匹配,以便从 读取的字符串/my/path/species.txt可以匹配 的每一行上的任何位置/my/path/ITS.OTU.table.tsv,请删除该-x选项。

如果您知道应该在每一行的哪个位置测试匹配项,则可以使用awk仅比较这些位的数据,但我们目前不知道您的数据是什么样的。