【发布时间】:2012-09-18 14:16:50
【问题描述】:
我有两个名为“fileA.txt”和“fileB.txt”的文件。
fileA.txt 的内容如下:
1 Arizona ABDJAQ 224
2 Ohio AKOGFR 458
3 Wisconsin EFGTAP 871
4 Colorado NAHBAX 991
上面的四列分别是“ID”、“State”、“Pattern”、“Number”
fileB.txt 有以下内容:
1 Arizona NKIGAB 763
2 Ohio BAVYAD 918
3 Wisconsin AUOBAQ 547
4 Colorado INABEA 622
四列又是“ID”、“State”、“Pattern”、“Number”
现在这就是我想要做的:
我想先扫描“fileA.txt”并删除“模式”列只有一个“A”的所有记录。保留所有有 2 个“A”的记录。所以我会删除俄亥俄州和威斯康星州。 (ID“2”和ID“3”)。同时,我也想同时从“fileB.txt”中删除这些ID! (尽管在 fileB 中,俄亥俄州和威斯康星州的模式中有 2 个“A”)。
在这一步之后,我的“fileA.txt”应该是这样的:
1 Arizona ABDJAQ 224
4 Colorado NAHBAX 991
我的“fileB.txt”应该是这样的:
1 Arizona NKIGAB 763
4 Colorado INABEA 622
接下来,我想扫描“fileB.txt”以删除所有模式为“A”的记录,并从“fileA.txt”中删除相应的记录。 (在本例中为 Arizona,因为它在 fileB 中只有“A”,因此我们从 fileB 和 fileA 中删除了 Arizona。)
在这一步之后,我将在每个文件中只留下一条记录:
“fileA.txt”将有:
4 Colorado NAHBAX 991
和“fileB.txt”会有
4 Colorado INABEA 622
所以,简而言之,我想扫描这两个文件,并只在两个文件中保留那些模式中有 2 个“A”的记录。
是否有单行 Unix 命令或相对简单的方法来执行此操作?
感谢您的帮助!
【问题讨论】:
-
我敢打赌,有人会为此想出一个
awk单行字。 -
我希望如此。我为此编写了一个 Python 脚本,但是,我真的很想要一个单行。
-
Python 脚本还不错。你为什么想要一个单线器?这似乎不是一个简单的操作——你用了整个屏幕来描述它:)。
标签: file design-patterns