Unix-使用awk以表格格式打印
我想创建一个类似这样的表,其中我在每个$2的前面显示#和标题标题,但我不想将其存储在我的文件中: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
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}