基本上我想读取字段21或51,但我无法读取确切的数据,我得到的字段不正确。

Logic:- awk -F ',' '{print $21,$50}'

数据-->test.txt
40968,SUR,ACT,1,Y,$GPNFT$,431068,SUR,MSUR,ACT,$DRS WRIGHT, HEWITT, GUNN & CHARLES$,$$,$PH8  0$,$DMB3005A$,UK,PH8  0AD,$BRAAN COTTAGE$,$$,$DUNKELD$,$PERTHSHIRE$,9772385,DOC,MED,ACT,Y,$GPNFT$,$METABOLIC$,$GAS ENDOSC$,M,$WRIGHT$,$GRAHAM$,$$,$$,$$,$$,$01-JAN-1959$,1982,,$U$,$Y$,$N$,$$,$N$,$002605139$,,$9772385$,$PH07$,$PH11$,$N$,$3005A$,$31-JUL-1997$,$00302620$,$00742230$,$$
594674,SUR,ACT,1,Y,$GVTRG$,431068,SUR,MSUR,ACT,$DRS WRIGHT, HEWITT, GUNN & CHARLES$,$$,$PH8  0$,$DMB3005A$,UK,PH8  0AD,$BRAAN COTTAGE$,$$,$DUNKELD$,$PERTHSHIRE$,99827837,DOC,MED,ACT,N,$GVTRG$,$$,$$,M,$GUNN$,$RODERICK$,$$,$$,$$,$$,$$,,,$U$,$N$,$N$,$$,$N$,$$,,$99827837$,$PH07$,$PH11$,$N$,$3005A$,$23-JUN-2010$,$00302620$,$00742230$,$$

产量
$DUNKELD$ $PH11$
$DUNKELD$ $PH11$

预期产量
9772385,$3005A$
1430701,$3005A$

有什么主意吗

最佳答案

使用GNU AWK 4.*对于FPAT:

$ awk -v FPAT='([^,]*)|([$][^$]+[$])' -v OFS=, '{print $21, $50}' file
9772385,$3005A$
99827837,$3005A$

你说你使用的是gawk 3.1.7——那是非常老的版本,因为你缺少了很多有用的功能,所以你需要一个新的版本。

10-04 13:41