用于映射列的awk命令&连接列
cat file.txt 一,;2|56;二, 1 | 67 1 | 56 二,;1.1.1|56;56;56;56 我有以上作为输入&我想把它显示为,直到管道和连接将是一样的 管道左侧的第一根立柱将与管道右侧的第一根立柱连接, 因此,预期的产出将是 1-56 2-2 这是第一排的。对于所有行,它应该以相同的方式发生。 非常感谢您的帮助。祝您救援成功用于映射列的awk命令&连接列,awk,Awk,cat file.txt 一,;2|56;二, 1 | 67 1 | 56 二,;1.1.1|56;56;56;56 我有以上作为输入&我想把它显示为,直到管道和连接将是一样的 管道左侧的第一根立柱将与管道右侧的第一根立柱连接, 因此,预期的产出将是 1-56 2-2 这是第一排的。对于所有行,它应该以相同的方式发生。 非常感谢您的帮助。祝您救援成功 awk -F\| '{n=split($1,a,";"); m=split($2,b,";"); m
awk -F\| '{n=split($1,a,";");
m=split($2,b,";");
min=n<m?n:m;
for(i=1;i<=min;i++) print a[i]"-"b[i]}' file
1-56
2-2
1-67
1-56
2-56
1-56
1-56
1-56
也许您想在输出行之间放置一个分隔符以指示记录…尝试:
awk -F'[;|]' '{for(i=1; i<=NF/2; i++) print $i "-" $(i+NF/2)}' file
1-56
2-2
1-67
1-56
2-56
1-56
1-56
1-56
说明:
此方法考虑了管道符号始终位于中间的情况:
awk -F'[;|]' ' # Use the semicolon and the pipe symbol as field separator
{
for(i=1; i<=NF/2; i++) # For every field on the left hand side of the pipe symbol
print $i "-" $(i+NF/2) # Print each field on the left hand side (LHS) of the
} # pipe symbol together with its RHS counterpart
' file
非常感谢。你能解释一下这个命令是怎么写的吗