我有以下两个文件(实际数据是制表符分隔的代替分号): input.txt
AWK匹配子串从2档
Astring|2042;MAR0303;foo1;B
Dstring|2929;MAR0283;foo2;C
db.txt
更新
TG9284;Astring|2042|morefoohere_foo_foo
TG9281;Cstring|2742|foofoofoofoofoo Dstring|2929|foofoofoo
因此,input.txt
的第1列是db.txt
的第2列的子字符串。这里只有两个由“|
”隔开的“字段”。
我想用awk来匹配这些两列(在制表符分隔的形式再次)打印以下:
Astring|2042;MAR0303;foo1;B;TG9284
Dstring|2929;MAR0283;foo2;C;TG9281
这是我的代码:
awk -F'[\t]' 'NR==FNR{a[$1]=$1}$1 in a {print $0"\t"$1}' input.txt db.txt
编辑 第2栏的db.txt
包含由空格分隔的第1列input.txt
的字符串。真实例子中的字符串比摘录中显示的要多得多。
并且'db.txt'确实有一个管道后面的''2'',而不是分号? –
是的。该文件有两列,第二列有一种由一些字符串 - 管道 - 4位数字组成的标识符。该部分应该匹配。 – rororo
@anubhava我想要'TG ####' – rororo