awk:当存在空白列时,如何确保列编号一致?

awk:当存在空白列时,如何确保列编号一致?,awk,Awk,my_文件如下所示: SELECTED NAME AGE * adam 30 bob 70 我想输出: adam bob 但是,如果我尝试:cat my_file | awk'{print$2}'它会输出 NAME adam 70 关于如何使用awk来解释空白列,有什么建议吗?使用gawk字段宽度 $ awk -v FIELDWIDTHS='11 8 3' '{print $2}' file NAME adam bob 你

my_文件
如下所示:

SELECTED   NAME    AGE
*          adam    30
           bob     70
我想输出:

adam
bob
但是,如果我尝试:
cat my_file | awk'{print$2}'
它会输出

NAME
adam
70

关于如何使用
awk
来解释空白列,有什么建议吗?

使用
gawk
字段宽度

$ awk -v FIELDWIDTHS='11 8 3' '{print $2}' file

NAME
adam
bob

你能试试下面的吗

awk '{printf("%s%s",/^ +/?$1:$2,ORS)}'  Input_file
输出如下

NAME
adam
bob

它总是第一个可以是空的吗?这不会改变任何事情。我在Mac上使用的是
awk-version awk version 20070501
。这是GNU
awk
特定的,并非所有
awk
都支持。但是我不确定我是否理解
printf
@Snowcrash,感谢您选择了正确的答案。在
printf
中,您可以提到您正在打印的变量类型。在本例中,我已经输入了
%s
,这意味着打印字符串这里检查条件意味着如果一行以空格开头,那么告诉条件为真的
将打印
$1
,否则
将打印
$2
,让我知道现在是否清除了它?ORS的用途是什么?@Snowcrash,输出记录分隔符,默认值为新行。