1

Я храню вывод файла pig в каталоге, который содержит строки с несколькими столбцами, разделенными разделителем \\u0001 .

Теперь в сценарии оболочки я хочу получить 7-е поле столбца из вывода.

Я попробовал следующие команды, однако не получил требуемый вывод:

cnt=`awk -F '^A' '{print $7,$1}' $f`
cnt=`cut -d'\\u0001' -f8 $f | awk '{s+=$0}END{print s+0}'`

Как добиться того же?


Вот пример файла:

printf "c1\\u0001c2\\u0001c3\\u0001c4\\u0001c5\\u0001c6\\u0001c7\\u0001c8" > 001.txt

2 ответа2

2

Попробуйте следующий синтаксис:

awk -F '\001' '{print $7}' < myfile

где:

  • -F - использовать следующий аргумент в качестве разделителя полей,
  • '\001' - метод выражения байта со значением 1,
  • '{print $7}' - для каждой строки ввода выведите 7-е поле, за которым следует новая строка,
  • < myfile - использовать myfile качестве входных данных.
1

Вы можете использовать команду cut для этого, например,

cut -d $'\001' -f7 001.txt

Где -d - ваш разделитель, а -f - номер столбца.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .