是否可以使用awk從文件中刪除行?我想找到最後一列中有Y的行,然後刪除與該行第2列中的值相匹配的行。使用AWK刪除特定行[或sed,grep,whatever]
前:
KEY1,TRACKINGKEY1,TRACKINGNUMBER1-1,PACKAGENUM1-1,N
,TRACKINGKEY1,TRACKINGNUMBER1-2,PACKAGENUM1-2,N
KEY1,TRACKINGKEY1,TRACKINGNUMBER1-1,PACKAGENUM1-1,Y
,TRACKINGKEY1,TRACKINGNUMBER1-2,PACKAGENUM1-2,Y
KEY1,TRACKINGKEY5,TRACKINGNUMBER1-3,PACKAGENUM1-3,N
KEY2,TRACKINGKEY2,TRACKINGNUMBER2-1,PACKAGENUM2-1,N
KEY3,TRACKINGKEY3,TRACKINGNUMBER3-1,PACKAGENUM3-1,N
,TRACKINGKEY3,TRACKINGNUMBER3-2,PACKAGENUM3-2,N
所以AWK會發現該行有3中的Y最後一列,然後再看列2 TRACKINGKEY1]和刪除具有TRACKINGKEY1在列中的所有行2.
預期結果:
KEY1,TRACKINGKEY5,TRACKINGNUMBER1-3,PACKAGENUM1-3,N
KEY2,TRACKINGKEY2,TRACKINGNUMBER2-1,PACKAGENUM2-1,N
KEY3,TRACKINGKEY3,TRACKINGNUMBER3-1,PACKAGENUM3-1,N
,TRACKINGKEY3,TRACKINGNUMBER3-2,PACKAGENUM3-2,N
這樣做的原因是,我們的船ping程序會在處理貨件時發出文件,以及何時該貨件無效[出現錯誤時]。所以我最終得到的是最初的包裹信息,然後是表明它已經無效的相同信息,然後是另一組包含新貨件信息的行。不幸的是,我們的ERP軟件有一個相當簡單的腳本語言,我甚至無法制作數組,因此我僅限於shell工具。
在此先感謝!
當NR == FNR時,如果我們之前沒有看過它,沒關係。不錯的解決方案。 – 2015-04-02 20:44:09