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

标签 linux ubuntu sed

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

我试过sed -i in iteration ;这会崩溃,错误是没有输入文件名称的文件。显然情况并非如此,正如我所看到的, ls it 并 grep 其中标识符的数量。只有 sed 似乎无法读取它。

我什至在网上找到了一个针对这个问题的 python/biopython 脚本,它非常简单,并且不会给出错误消息,但它也只删除了第一项。

我认为这与实际上不存在的文件属性/临时文件有关(?)。 我正在使用 Ubuntu 12.04“精确” 我该如何解决这个问题?

最佳答案

快速而肮脏(不检查修改文件是否已创建,...)

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

关于linux - ubuntu linux sed 影响文件属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209407/

相关文章:

Python 文件中的空格

ubuntu - 将 vm 转换为 native /双启动

c - 该 C 程序在其他计算机上按预期运行,但在我的计算机上表现奇怪

android - 在 Windows Linux 子系统上,Android SDK 目录不存在

regex - 如何搜索特定模式和分隔符的多个单词?

linux - sed 查找并替换 IP 地址后包含字符串的行

regex - 使用 Linux 工具将行从一种格式转换为另一种格式

linux - 获取 linux 中 repo 的大小,不包括特定的子 repo

c++ - 调试时 Kubuntu 中的繁忙进程

php - 如何从 * PHP 或 bash 进行长轮询?