使用awk格式化文本

时间:2015-01-06 23:03:29

标签: linux bash awk sed

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

11/13/14    101 HUDSON AUBONPAINJERSEY CITY NJ      $4.15
11/22/14    MTAMVM*110TH ST/CATNEW YORK NY          $19.05
11/22/14    DUANE READE #14226 0NEW YORK NY         $1.26

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

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

提前告诉你

2 个答案:

答案 0 :(得分:5)

尝试这样做:

 $ awk '
     {
         print $1 > "dates"; $1=""
         print $NF > "prices"; $NF=""
         print $0 > "desc"
     }
' file

或:

awk -F'  +' '
    {
        print $1 > "dates"
        print $2 > "desc"
        print $3 > "prices"
    }
' file 

然后:

$ cat dates
$ cat desc
$ cat prices

答案 1 :(得分:0)

没有足够快速成为第一个提供awk解决方案的人,所以这里有grepsed ...

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