考虑:
文件1
1
2
3
文件2
23
45
27
67
867
输出
1:23
1:45
1:27
1:67
1:867
2:23
2:45
2:27
2:67
2:867
3:23
3:45
3:27
3:67
3:867
如何使用文件 1 和文件 2 中的分隔符 ':' 使用 AWK 来命令此输出(如输出)?
有很多方法可以解决您的问题;这适合您的用例吗?
awk 'NR==FNR{a[++n]=$0; next} {for (i=1; i<=n; i++) {print $0 ":" a[i]}}' file2 file1
1:23
1:45
1:27
1:67
1:867
2:23
2:45
2:27
2:67
2:867
3:23
3:45
3:27
3:67
3:867
具有更好的格式和注释
awk '
NR==FNR{ # for the first file
a[++n]=$0 # load values into an array
next # then skip to the next line/file
}
{
for (i=1; i<=n; i++) { # for all the items in the array
print $0 ":" a[i] # print the value from file1, then the value from the array
}
}' file2 file1
1:23
1:45
1:27
1:67
1:867
2:23
2:45
2:27
2:67
2:867
3:23
3:45
3:27
3:67
3:867
或者,也许与 GNU 并行:
parallel echo {1}":"{2} :::: file1 :::: file2
1:23
1:45
1:27
1:67
1:867
2:23
2:45
2:27
2:67
2:867
3:23
3:45
3:27
3:67
3:867
如果您的输入中有
<br/>
字符,您可以使用以下方法删除任何非数字内容:
awk 'NR==FNR{gsub("[^0-9]", "", $0); a[++n]=$0; next} {for (i=1; i<=n; i++) {gsub("[^0-9]", "", $0); print $0 ":" a[i]}}' file2 file1