【发布时间】:2016-03-03 15:12:23
【问题描述】:
我正在尝试在一个目录中的多个文件的内容中执行一些 grep 并将我的 grep 匹配附加到一个文件中,在我的输出中,我还想要一个具有文件名的列以及从哪些文件中了解条目被拾起。我试图用 awk 来做同样的事情,但它没有用。
for i in *_2.5kb.txt; do more $i | grep "NM_001080771" | echo `basename $i` | awk -F'[_.]' '{print $1"_"$2}' | head >> prom_genes_2.5kb.txt; done
文件名是这样的,我有大约 50 个文件
48hrs_CT_merged_peaks_2.5kb.txt
48hrs_TAMO_merged_peaks_2.5kb.txt
72hrs_TAMO_merged_peaks_2.5kb.txt
72hrs_CT_merged_peaks_2.5kb.txt
5D_CT_merged_peaks_2.5kb.txt
5D_TAMO_merged_peaks_2.5kb.txt
每个文件包含几行
chr1 3663275 3663483 14 2.55788 2.99631 1.40767 NM_001011874 -
chr1 4481687 4488063 264 7.85098 28.25170 26.41094 NM_011441 -
chr1 5008006 5013929 243 8.20677 26.17854 24.37907 NM_021374 -
chr1 5578362 5579949 65 3.48568 7.83501 6.57570 NM_011011 +
chr1 5905702 5908002 148 5.84647 16.53171 14.88463 NM_010342 -
chr1 9288507 9290352 77 4.04459 9.12442 7.77642 NM_027671 -
chr1 9291742 9292528 142 5.74749 16.21792 14.28185 NM_027671 -
chr1 9535689 9536176 72 4.45286 8.82567 7.29563 NM_021511 +
chr1 9535689 9536176 72 4.45286 8.82567 7.29563 NM_175236 +
chr1 9535689 9536176 72 4.45286 8.82567 7.29563 NR_027664 +
当我得到"NM_001080771" 的匹配项时,我将该行的全部内容打印到一个新文件中,并且对于每个文件,此操作都在完成,并将匹配项附加到一个输出文件中。我还想在最终输出中添加一个带有文件名的列,如上所示,以便我知道从哪个文件中获取条目。
想要的输出
chr4 21610972 21618492 193 7.28409 21.01724 19.35525 NM_001080771 - 48hrs_CT
chr4 21605096 21618696 76 4.22442 9.32981 7.68131 NM_001080771 - 48hrs_TAMO
chr4 21604864 21618713 12 1.78194 2.36793 1.25883 NM_001080771 - 72hrs_CT
chr4 21610305 21615717 26 2.90579 4.47333 2.65353 NM_001080771 - 72hrs_TAMO
chr4 21609924 21618600 23 2.63778 4.0642 2.33685 NM_001080771 - 5D_CT
chr4 21609936 21618680 30 5.63778 3.0642 8.33685 NM_001080771 - 5D_TAMO
这不起作用。我想基本上附加一个列,其中文件名也应该作为条目添加到第一列或最后一列。该怎么做?
【问题讨论】:
-
您需要向我们展示您的输入和所需输出的样本,否则我们很难为您提供帮助。
-
@TomFenech 我已经修改了问题