Проблема с awk и (возможно) нулевыми символами
У меня есть этот файл, который "может быть" двоичный файл:
DATA FIELDINFO Cloud_Mask_QA {{{
rank: 2
type: 20
dims: Cell_Along_Swath_1km 2030, Cell_Across_Swath_1km 1354,
data: ... (2748620)
(0,0) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,16) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,32) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,48) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,64) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,80) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,96) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,112) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,128) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,144) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,160) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,176) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
(0,192) ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@, ^@
Если я использую sed -n "l" file
, чтобы увидеть "непечатные символы", я получаю:
DATA FIELDINFO Cloud_Mask_QA {{{$
rank: 2$
type: 20$
dims: Cell_Along_Swath_1km 2030, Cell_Across_Swath_1km 1354, $
data: ... (2748620)$
(0,0) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,16) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,32) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,48) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,64) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,80) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,96) \000, \000, \000, \000, \000, \000, \000, \000, \000, \
\000, \000, \000, \000, \000, \000, \000$
(0,112) \000, \000, \000, \000, \000, \000, \000, \000, \000,\
\000, \000, \000, \000, \000, \000, \000$
(0,128) \000, \000, \000, \000, \000, \000, \000, \000, \000,\
\000, \000, \000, \000, \000, \000, \000$
(0,144) \000, \000, \000, \000, \000, \000, \000, \000, \000,\
\000, \000, \000, \000, \000, \000, \000$
(0,160) \000, \000, \000, \000, \000, \000, \000, \000, \000,\
\000, \000, \000, \000, \000, \000, \000$
(0,176) \000, \000, \000, \000, \000, \000, \000, \000, \000,\
\000, \000, \000, \000, \000, \000, \000$
(0,192) \000, \000, \000, \000, \000, \000, \000, \000, \000,\
\000, \000, \000, \000, \000, \000, \000$
Я пытаюсь использовать awk на нем, но если я это сделаю awk '{print $0}' file
, Я получил:
DATA FIELDINFO Cloud_Mask_QA {{{
rank: 2
type: 20
dims: Cell_Along_Swath_1km 2030, Cell_Across_Swath_1km 1354,
data: ... (2748620)
(0,0)
Похоже, что awk прекращает обработку файла с первого найденного символа "^@" или "\000".
Как я могу избежать этого?
Примечание: кажется, мой awk
является mawk
1 ответ
gawk
кажется, чтобы решить проблему, а не mawk
, awk
обычно связан с одним из этих двух, поэтому единственное, что нужно сделать, это установить gawk
и использовать его вместо awk
,