我有这个 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)
非常感谢
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
仅比较这些位的数据,但我们目前不知道您的数据是什么样的。