Bash 文件中的每一行列作为awk中的键

Bash 文件中的每一行列作为awk中的键,bash,awk,Bash,Awk,多亏了@jxc,我才能够在帖子中获得一个工作代码: 如果在文件中找到数字id,则使用Bash循环生成目录 我正在尝试使用awk在一个目录中创建子目录,该目录将在/path/to/directory中创建。如果在$0中找到文件1的$2中的完整字符串,则第二行始终为该格式的文件2。文件2中会有更多行,然后匹配 该目录将已在/path/to/directory中创建。在下面的例子中, 子目录已存在于/path/to/目录中,并且由于在文件1的$2中找到了19-0000_Lname-yy-zzz和19-

多亏了@jxc,我才能够在帖子中获得一个工作代码:

如果在文件中找到数字id,则使用Bash循环生成目录

我正在尝试使用awk在一个目录中创建子目录,该目录将在/path/to/directory中创建。如果在$0中找到文件1的$2中的完整字符串,则第二行始终为该格式的文件2。文件2中会有更多行,然后匹配

该目录将已在/path/to/directory中创建。在下面的例子中, 子目录已存在于/path/to/目录中,并且由于在文件1的$2中找到了19-0000_Lname-yy-zzz和19-0001_Lname-yyy-zzzzz,因此它们在子目录中创建。谢谢

我想到了,也许这两行:

a[substr($i,1,length($2)]
然后

文件1

文件2

所需子目录

您可以尝试此awk:

或者,这也应该起作用:

awk 'FNR==NR{seen[$2]; next} {s=$0; sub(/_[^_]+$/, "", s)} s in seen' file1 FS=_ file2
您可以尝试此awk:

或者,这也应该起作用:

awk 'FNR==NR{seen[$2]; next} {s=$0; sub(/_[^_]+$/, "", s)} s in seen' file1 FS=_ file2

要创建目录,请使用awk…|非常感谢。要创建目录,请使用awk…|谢谢你。
xxxx
19-0003-xxx-xxx-xxx_000-111
yyyy
xxxx
19-0000_Lname-yy-zzz_000-111
yyyy
xxxx
19-0001_Lname-yyyy-zzzzz_000-111
yyyy
SubDirectory
19-0000_Lname-yy-zzz_000-111
19-0001_Lname-yyyy-zzzzz_000-111
awk 'FNR==NR{seen[$2]; next} ($1 FS $2) in seen' file1 FS=_ file2
19-0000_Lname-yy-zzz_000-111
19-0001_Lname-yyyy-zzzzz_000-111
awk 'FNR==NR{seen[$2]; next} {s=$0; sub(/_[^_]+$/, "", s)} s in seen' file1 FS=_ file2