gpt4 book ai didi

awk - awk 如何将文件名作为输出中的一列?

转载 作者:行者123 更新时间:2023-12-03 03:37:46 31 4
gpt4 key购买 nike

我正在尝试在目录中的多个文件的内容中执行一些 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

这不起作用。我基本上想附加一列,其中文件名也应该作为第一列或最后一列的条目添加。如何做到这一点?

最佳答案

或者您可以在 awk 中完成所有操作

 awk '/NM_001080771/ {print $0, FILENAME}' *_2.5kb.txt

这会将文件名修剪为所需的格式

$ awk '/NM_001080771/{sub(/_merged_peaks_2.5kb.txt/,"",FILENAME); 
print $0, FILENAME}' *_2.5kb.txt

关于awk - awk 如何将文件名作为输出中的一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775885/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com