awk Scripting printf忽略了我的sort命令

时间:2015-10-26 00:08:45

标签: awk

我正在尝试运行我已设置的脚本,但是当我对内容进行排序并显示文本时,内容将被打印但是sort命令被忽略并且信息只是打印出来。我使用awk尝试了这种代码格式,但忽略了sort函数,但我不确定原因。

我试过的命令:

sort -t, -k4 -k3 | awk -F, '{printf "%-18s %-27s %-15s %s\n", $1, $2, $3, $4 }' c_list.txt

我得到的输出是:

Jim Girv    199 pathway rd    Orlando      FL  
Megan Rios  205 highwind dr   Sacremento   CA  
Tyler Scott 303 cross st      Saint James  NY  
Tim Harding 1150 Washton ave  Pasadena     CA  

我需要的输出是:

Tim Harding 1150 Washton ave  Pasadena     CA   
Megan Rios  205 highwind dr   Sacremento   CA  
Jim Girv    199 pathway rd    Orlando      FL  
Tyler Scott 303 cross st      Saint James  NY     

它只是忽略了sort命令,但仍然以文件格式打印我需要的信息。 我需要它根据第四个字段进行排序,首先是州和第三个字段然后显示信息。

每个字段用逗号分隔的示例。

 Field 1   Field 2          Field 3   Field 4
Jim Girv, 199 pathway rd,   Orlando,  FL

1 个答案:

答案 0 :(得分:3)

问题是您正在执行sort | awk 'script' file而不是sort file | awk 'script',因此sort正在排序任何内容,因此awk在您的原始文件上运行时不会产生任何输出从而产生输出。你应该注意到你的sort命令因缺乏输入而被挂起,你应该在你的问题中提到它。

演示:

$ cat file
c
b
a

$ sort | awk '1' file
c
b
a

$ sort file | awk '1'
a
b
c