我有两个文件。文件 A 包含 N 行的文本,文件 B 包含长度为 N 的二进制模式字符串 0 和 1。
我想从文件 A 中删除行号与文件 B 中包含 0 的行号相同的行。
我读到用 awk 做这件事可能是个好主意,但我不知道如何使用它。
文件很长,例如2000行(它们是视频轨迹)
例如:
文件A:
Line 1: 123456
Line 2: 789012
Line 3: 345678
Line 4: 901234
文件 B:
Line 1: 1
Line 2: 0
Line 3: 0
Line 4: 1
执行后:
文件A:
Line 1: 123456
Line 2: 901234
最佳答案
您可以为此使用粘贴
和剪切
:
paste fileB fileA | grep '^1' | cut -f2-
paste fileB fileA
- 并排粘贴文件内容,用制表符分隔grep '^1'
- 过滤以 1 开头的行cut -f2-
- 提取我们需要的内容
cut
和paste
都使用制表符作为默认分隔符。
这与 Benjamin's 非常相似解决方案。这里的一个小优点是,即使 fileA 每行有多个字段,它也能正常工作。
关于bash - 从具有二进制模式字符串的文件中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610985/