如何从shell中的大文件中获取此行

时间:2014-05-22 08:12:20

标签: shell

我有一个大文件,其中有如下所示的块:

....
Org Id VIN                  Plate Registration   Error Code
------ -------------------- -------------------- ------------------------------------------
124    aaaaaaaaaaaaaaaaa    WI-V-456             Info 1
124    bbbbbbbbbbbbbbbbb    DH-BE-1111           Info 2
124    ccccccccccccccccc    A-RM-1332            Info 3
124    ddddddddddddddddd    S-SH-3333            Info 4
124    eeeeeeeeeeeeeeeee    RH-L-360             Info 5

---------------------------------------------------------------------------------------------
....

我只想提取每个列的Error Code,我该怎么做?

cat ${fichier} | while read line
   do
   if [ "x${line}" = 'xOrg Id VIN                  Plate Registration   Error Code' ]
        then 
            echo  ${line}
                        ##
        fi
   done

2 个答案:

答案 0 :(得分:1)

例如,您可以使用awk

$ awk '$NF>0{print $(NF-1), $NF}' file
Error Code
Info 1
Info 2
Info 3
Info 4
Info 5

这将打印倒数第二个和最后一个字段,以防最后一个是文本或数字。

答案 1 :(得分:0)

您有几个选择。 @fedorqui使用awk显示其中一个,您也可以将cutgrep混合使用:

$ cut -c 50- testfile.txt | grep ^[^-]
Error Code
Info 1
Info 2
Info 3
Info 4
Info 5

表示:剪切testfiletxt-将字符从50显示到行尾(-c 50-),然后将其发送到grep以仅显示不以&#开头的行34; - "炭。