Unix-使用awk以表格格式打印

Unix-使用awk以表格格式打印,unix,awk,Unix,Awk,我想创建一个类似这样的表,其中我在每个$2的前面显示#和标题标题,但我不想将其存储在我的文件中: Name ID Gender John Smith #4567734D Male Kyle Toh #2437882L Male Julianne .T #0324153T Female 我得到的结果是这样的: Name ID Gender # Name

我想创建一个类似这样的表,其中我在每个$2的前面显示#和标题标题,但我不想将其存储在我的文件中:

Name          ID             Gender

John Smith    #4567734D      Male
Kyle Toh      #2437882L      Male
Julianne .T   #0324153T      Female
我得到的结果是这样的:

Name          ID             Gender
#
Name          ID             Gender
John Smith    #4567734D      Male
Name          ID             Gender
Kyle Toh      #2437882L      Male
Name          ID             Gender
Julianne .T   #0324153T      Female
通过使用此命令:

awk -F: '   {print "Name:ID:Gender\n"} 
            {print $1":#"$2":"$3}' data.txt |column -s ":" -t

仅在第一行打印标题:

awk -F: 'NR==1 {print "Name:ID:Gender\n"} {print $1":#"$2":"$3}'
或:

说明:

awk程序由以下形式的表达式组成:

CONDITION { ACTIONS } [ CONDITION { ACTIONS }, ... ]
。。。其中条件和操作是可选的。如果缺少条件,例如:

{ ACTIONS }
。。。然后操作将应用于任何输入行。在上述情况下,我们有两个表达式:

# Only executed if NR==1
NR==1 {print "Name:ID:Gender\n"}

# CONDITION is missing. ACTIONS will be applied to any line of input
{print $1":#"$2":"$3}

请您的问题也向我们展示示例输入。或者更典型地,在begin块中:
begin{print“Name:ID:Gender\n”}
当然,也可以使用
begin
。@hek2mgl现在虽然标题不再重复,但如何避免在第二行打印#,并将其保留为空?只要
print$1:“:$3
# Only executed if NR==1
NR==1 {print "Name:ID:Gender\n"}

# CONDITION is missing. ACTIONS will be applied to any line of input
{print $1":#"$2":"$3}