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

时间:2015-03-24 08:56:49

标签: 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}')

我现在想将它们粘贴在一起,但是粘贴要求您使用带有文本文件的文件。为简单起见,我宁愿不创建额外的文件,那么如何将变量输入到粘贴中以列出行和列中的数据?

感谢任何帮助,谢谢:)

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

awk -F: '{print $1 $2}'

我需要输入以使用awk语句中的变量进行粘贴。

编辑#2:要回答评论,它应该是

Bob 75

Mary 85

保守党12

1 个答案:

答案 0 :(得分:0)

您可以将paste与流程替换结合使用:

#!/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