ubuntu linux sed会影响文件属性吗?

时间:2015-12-10 18:44:44

标签: linux ubuntu sed

我有一个75000项的文本文件,每个项目有2行。第1行有一个标识符,第2行有一个文本字符串。 我需要删除130个项目,列表中的随机标识符或可以放入文件。 我可以执行一个项目的删除,但不能超过一个。 我尝试管道标识符并获得一个空输出文件。 我尝试了sed -e 'expression' inputfile > outfile的重复命令。这有效,但需要一个新的输出文件,然后成为下一次迭代的输入文件,依此类推。这可能是最后的手段。

我试过sed -i in iteration;这崩溃了,错误是输入文件的名称没有文件。显然不是这种情况,正如我所看到的那样,是它并且grep其中的标识符数量。只有sed似乎无法阅读它。

我甚至在网上发现了一个python / biopython脚本来解决这个问题,它非常简单并且没有给出错误信息,但它也只删除了第一个项目。

我认为它与文件属性/临时文件有关,而这些文件并不存在(?)。 我正在使用Ubuntu 12.04' Precise' 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

快速且脏(不检查是否创建了修改文件,...)

sed

  • 假设您的模式列表中没有特殊的元字符

sed 's#.*#/&/{N;d;}#' YourListToExclude > /tmp/exclude.sed sed -f /tmp/exclude.sed YourDataFile > /tmp/YourDataFile.tmp mv /tmp/YourDataFile.tmp YourDataFile rm /tmp/exclude.sed

AWK

awk 'FNR==NR{ex=(ex==""?"":ex"|")$0;next}$0!~ex{print;getline;print;next}{getline}' YourListToExclude YourDataFile > /tmp/YourDataFile.tmp
mv /tmp/YourDataFile.tmp YourDataFile