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命令所产生的结果,而没有说明为什么这不是您想要的。你能给我们一个更大的图景,说明你正在努力实现的目标吗?另外,可以修复格式设置,所需输出无代码块;输入文件真的包含空行吗。。。。