使用 awk 打印第一个和最后一个字段

Using awk to print first and last fields

我打印每行的第一个和最后一个字段的 awk 脚本没有按我预期的那样工作。它只为最后一行打印最后一个字段。我该如何解决这个问题?

c:\awk>type file_lists.t01

dgo_files.txt date_frame_full.f90 xdtff_good.f90   
dtd_files.txt date_frame_full.f90 xread_date_time_frame_stream_dir.f90  
xem_files.txt kind.f90 foo.f90

c:\awk>gawk '{ print  " " $NF }' file_lists.t01

dgo_files.txt 
dtd_files.txt 
xem_files.txt foo.f90

您的文件似乎使用了 carriage returns。我建议使用 GNU awk:

gawk 'BEGIN{ RS="\n|\r\n" }{ print  " " $NF }' file_lists.t01

参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR