Shell 使用“粘贴”在列中垂直打印数据

Shell 使用“粘贴”在列中垂直打印数据,shell,unix,Shell,Unix,我正在尝试使用“粘贴”在两列中垂直列出数据 假设我在文本文件中有以下数据 Bob:75:Male Mary:85:Female Troy:12:Male 我提取所有名称并将其存储为变量: NAMES=$(cat $FILE | awk -F: '{print $1}') 我对年龄也这么做 AGE=$(cat $FILE | awk -F: '{print $2}') 我现在想将它们粘贴在一起,但是粘贴要求将文件与文本文件一起使用。为了简单起见,我不想创建一个额外的文件,那么如何将变量输

我正在尝试使用“粘贴”在两列中垂直列出数据

假设我在文本文件中有以下数据

Bob:75:Male

Mary:85:Female

Troy:12:Male
我提取所有名称并将其存储为变量:

NAMES=$(cat $FILE | awk -F: '{print $1}')
我对年龄也这么做

AGE=$(cat $FILE | awk -F: '{print $2}')
我现在想将它们粘贴在一起,但是粘贴要求将文件与文本文件一起使用。为了简单起见,我不想创建一个额外的文件,那么如何将变量输入到paste中,以在行和列中列出数据呢

感谢您的帮助,谢谢:

编辑:为了澄清我已经简化了这个问题,我正在对数据做其他事情,所以我寻找的解决方案不仅仅是使用

awk -F: '{print $1 $2}'
我需要使用awk语句中的变量输入粘贴

编辑2:要回答注释,它应该是这样的

鲍勃75

玛丽85

Tory 12

您可以将粘贴与过程替换一起使用:

#!/bin/bash

# read value from `$file` in 2 arrays
names=()
age=()
while read -r n a; do
   names+=($n)
   age+=($a)
done < <(awk -F: '{print $1, $2}' "$file")

# paste 2 arrays together
paste <(printf "%s\n" "${names[@]}") <(printf "%s\n" "${age[@]}")
Bob     75
Mary    85
Troy    12

你能给出一个最终结果的示例吗?我已经添加到了主要问题中,因为我无法在注释部分获得正确的格式@AlbertoZaccagniI需要使用awk语句中的变量输入粘贴。->这对我来说很难闻。您的输出看起来正是您所说的您不想要的awk命令所产生的结果,而没有说明为什么这不是您想要的。你能给我们一个更大的图景,说明你正在努力实现的目标吗?另外,可以修复格式设置,所需输出无代码块;输入文件真的包含空行吗。。。。