Join awk sed用一个几乎相同的列连接3个表。。。当然比python容易

Join awk sed用一个几乎相同的列连接3个表。。。当然比python容易,join,awk,sed,tabular,Join,Awk,Sed,Tabular,我现在正在重建一个相当单一的数据库,我想用半匹配的内容连接3个表,我有几组,但它们都是三组的。情况如下: --注:所有表格均为ascii格式,空格已删除--- T1_01=表1= 1 + 'stuff1' + additional content 1 (where additional content only sometimes available) 2 "" 3 "" ....400 T1_02=表2= 1 + "different stuff" + additional co

我现在正在重建一个相当单一的数据库,我想用半匹配的内容连接3个表,我有几组,但它们都是三组的。情况如下:

--注:所有表格均为ascii格式,空格已删除---

T1_01=表1=

1 + 'stuff1' + additional content 1  (where additional content only sometimes available)

2  ""

3  ""

....400
T1_02=表2=

1 + "different stuff" + additional content 2

2 ""

3 ""

... 400
T1_03=表3=

5 cols yet other stuff + 001 + additional content 3

5 cols yet other stuff + 003    ""

5 cols yet other stuff + 007    ""

...

5 cols yet other stuff + 399   some rows are skipped, varies which ones

5 cols yet other stuff + 400
我想要的是,对于每个“组”,我有3个表,因为这些表以方便的方式分组,即T1_01、T1_02、T1_03将是组1的表1、2、3,再次是T2_01、T2_02、T2_03。我总共需要做60次,我希望的表格输出是:

T1_0123=

1 + 'stuff1' + additional content 1 1 + "different stuff" + additional content 2 5 cols yet other stuff + 001 + additional content 3
2 + 'stuff1' + additional content 1 2 + "different stuff" + additional content 2 "something to fill in the empty spaces, like a set of -99.9 values"
3 + 'stuff1' + additional content 1 3 + "different stuff" + additional content 2 5 cols yet other stuff + 003 + additional content 3
...
400 ""
现在我做了第一次跑步,然后

join-11-211 T1_01 T1_02>T1_012
效果很好,但只有前两个 及

加入-11-26 T1\u 01 T1\u 03
。。。由于001不是1,因此不工作

我希望一次可以跑完所有3张桌子,然后做一些类似的事情
sed某物awk$(cat list_of_T01)$(cat list_of_T02)$(cat list_of_T03)
作为批处理作业运行。我一直在学习python,所以在那里也可以这样做,但我肯定AWK更容易?欢迎提出任何建议

试试这个:

join -1 1 -2 6 <(sed 's/^[0-9] /00&/;s/^[0-9][0-9] /0&/;' T1_01) T1_03

join-11-26有时向陌生人解释问题会提示提问者给出答案。我希望你也是这样。否则,请显示实际表格和所需结果的示例。我认为分隔符是一个制表符,但我相信它看起来像是用于这些目的的空格。也就是说,我无法使用上面的匹配,我正在相应文件中“匹配”1,2,3,…10,11,12,…399400与001002003,…010011012,…399400。我“认为”它上面只加了零??此外,我只能以您建议的方式匹配2/3个文件。我想我需要的是将“00”替换为“?”,将“0???”替换为“?”。谢谢你的想法@user1594443最好在nums之前添加零,因为在没有零的两个文件中,它都是第一列,您不应该在意它可能会影响其他内容。不过,如果你要更改第五列,正则表达式会变得非常复杂,以避免更改其他内容的可能性。谢谢你的帮助,我现在就明白了。另外@potong,我认为实际的巨大表格可能会混淆问题,但这里是文件的顶部。我的T1_01是:1_P10644 0.816 123.04 2450.3 74.2 15.34-1.553-4.135,2个停车,3_P10569 0.791 146.30 2650.7 75.3 15.50-1.478-3.41,,同样,T1_02是:1 F1_P10644 P 1 4.89977691-0.5104696 15.3,2停放N 2 4.88965087-0.4904939 0.0,3 F1_P10569 P 3 4.89642427-0.5099916 15.5,和T1_03(这导致了大部分但并非所有的问题):F1_P10644 4.899776910023531-0.510469633262908 15.34 100606F1red 001 122.47 2.94 115.17,F1_P10569 4.896424277974554-0.5099916554702 15.50 100606F1red 003 145.55 2.72 138.25,F1_P10769 4.906435995618358-0.51124664444149622 16.42 100606F1red 004 116.28 12.87 108.98,其中我加了一个,以指示新行,使其可读。
join -1 1 -2 6 <(sed 's/^[0-9][^0-9]/00&/;s/^[0-9][0-9][^0-9]/0&/;' T1_01) T1_03