Text-Processing
選擇每個文件的特定列,粘貼到新文件
我有 20 個具有相同行數的製表符分隔文件。我想選擇每個文件的第 4 列,並粘貼到一個新文件中。最後,新文件將有 20 列,每列來自 20 個不同的文件。
如何使用 Unix/Linux 命令執行此操作?
輸入,相同格式的 20 個。我希望文件 1 的第 4 列在此處表示為 A1:
chr1 1734966 1735009 A1 0 0 0 0 0 1 0 chr1 2074087 2083457 A1 0 1 0 0 0 0 0 chr1 2788495 2788535 A1 0 0 0 0 0 0 0 chr1 2821745 2822495 A1 0 0 0 0 0 1 0 chr1 2821939 2822679 A1 1 0 0 0 0 0 0 ...
輸出文件,有 20 列,每列來自 20 個文件的第 4 列之一:
A1 A2 A3 ... A20 A1 A2 A3 ... A20 A1 A2 A3 ... A20 A1 A2 A3 ... A20 A1 A2 A3 ... A20 ...
在
paste
bash 下,您可以執行以下操作:paste <(cut -f 4 1.txt) <(cut -f 4 2.txt) .... <(cut -f 4 20.txt)
使用 python 腳本和任意數量的文件 (
python scriptname.py column_nr file1 file2 ... filen
):#! /usr/bin/env python # invoke with column nr to extract as first parameter followed by # filenames. The files should all have the same number of rows import sys col = int(sys.argv[1]) res = {} for file_name in sys.argv[2:]: for line_nr, line in enumerate(open(file_name)): res.setdefault(line_nr, []).append(line.strip().split('\t')[col-1]) for line_nr in sorted(res): print '\t'.join(res[line_nr])