使用 awk 格式化文本

formatting text using awk

您好,我有以下文本,我需要使用 awk 或 sed 来打印 3 个单独的列

11/13/14    101 HUDSON AUBONPAINJERSEY CITY NJ      .15
11/22/14    MTAMVM*110TH ST/CATNEW YORK NY          .05
11/22/14    DUANE READE #14226 0NEW YORK NY         .26

所以我想生成一个包含所有日期的文件。包含所有描述的另一个文件和包含所有数字的第三个文件

我可以使用 awk 打印第一列 printy $1,然后使用 -F [$] 选项打印最后一列,但我不能只打印中间一列,因为有空格等。我可以吗忽略空格?或者有更好的方法吗?

提前谢谢你

尝试这样做:

 $ awk '
     {
         print  > "dates"; =""
         print $NF > "prices"; $NF=""
         print [=10=] > "desc"
     }
' file

或:

awk -F'  +' '
    {
        print  > "dates"
        print  > "desc"
        print  > "prices"
    }
' file 

然后:

$ cat dates
$ cat desc
$ cat prices

速度不够快,无法成为第一个给出 awk 解决方案的人,所以这里有 grepsed...

grep -o '^.*/.*/1.' file   #first col
sed 's/^.*\/.*\/1.//;s/$.*//' file   #middle col
grep -o '$.*$' file    #last col