awk -F не ​​работает

Когда я делаю следующие команды:

echo "1;2;3;4;5" > file.txt

Тогда:

awk -F; {print $1} file.txt

Я не получаю второй элемент file.txt. Что не так?

0
задан 22 April 2018 в 22:28

2 ответа

Несколько вещей:

;, скорее всего, особенность вашей оболочки, поэтому нужно будет экранировать, чтобы передать его как аргумент awk -F аналогично, $1 будет интерпретироваться shell, если не указано окончательно, $1 будет первым элементом file.txt, а не вторым

. Попробуйте

awk -F\; '{print $2}' file.txt
4
ответ дан 17 July 2018 в 16:23

Несколько вещей:

;, скорее всего, особенность вашей оболочки, поэтому нужно будет экранировать, чтобы передать его как аргумент awk -F аналогично, $1 будет интерпретироваться shell, если не указано окончательно, $1 будет первым элементом file.txt, а не вторым

. Попробуйте

awk -F\; '{print $2}' file.txt
4
ответ дан 23 July 2018 в 17:15
  • 1
    Правильная форма: awk -F \; & quot; {print \ $ 2} & quot; file.txt – willy 22 April 2018 в 22:41
  • 2
    цитируется и работает, зависит от того, что вы считаете читаемым: awk -F ";" ... или awk -F ';' ... – glenn jackman 22 April 2018 в 23:07
  • 3
    @willy Ваша версия в комментарии не будет работать, потому что двойные кавычки $ 1inside все равно будут оцениваться оболочкой как переменной, а не awk. Вам нужны одинарные кавычки вокруг этого, как видно из ответа, или с помощью знака доллара с обратной косой чертой. – Byte Commander 23 April 2018 в 00:15

Другие вопросы по тегам:

Похожие вопросы: