Intereting Posts
Объединять записи в зависимости от общих столбцов и указывать значения, которые являются необычными в последнем столбце как разделенные запятыми Сообщение rsync «пропускать нерегулярный файл», когда не копируются ссылки iptables не блокирует Как grep рекурсивные результаты дерева UNIX вместе с каждым узлом дерева? Невозможно выполнить команду с помощью su для другого (системного) пользователя проверка статуса для команды sleep Количество ссылок для папки не отражает реальный статус? Создание рабочих столов на стандарте EWMH / NetWM с Bash Postfix: Исходящий фильтр электронной почты + отправка отправленного письма в папку Имена пользователей и хостов в открытом ключе по идентификатору ssh-copy-id Как настроить ширину столбца в выводе команды Linux Какой пакет имеет GNU для Solaris? Проблемы с отображением: Xrandr, невосприимчивый монитор, несуществующий внешний монитор Выбрать строки, используя диапазоны в Vim? apt-get remove удаляет неожиданные пакеты

Ошибка сепаратора поля Awk?

Это ожидаемый способ работы разделителя полей awk:

$ echo 'fooXbar' | awk 'BEGIN {FS="X"} {print $1}' foo $ echo 'fooXbar' | awk 'BEGIN {FS="X"} {print $2}' bar $ 

но если FS – «- | -», тогда все становится странным:

 $ echo 'foo-|-bar' | awk 'BEGIN {FS="-|-"} {print $1}' foo $ echo 'foo-|-bar' | awk 'BEGIN {FS="-|-"} {print $2}' | $ echo 'foo-|-bar' | awk 'BEGIN {FS="-|-"} {print $3}' bar $ 

Зачем? Почему $ 2 a "|" во втором примере?

ОБНОВИТЬ:

 $ echo 'foo-|-bar' | awk 'BEGIN {FS="-\|-"} {print $2}' awk: warning: escape sequence `\|' treated as plain `|' | $ 

FS – регулярное выражение: awk интерпретирует -|- как " - или - ".

Используйте -\|- вместо этого. Вам нужно удвоить обратную косую черту внутри строкового литерала.

 echo 'foo-|-bar' | awk 'BEGIN {FS="-\\|-"} {print $1}' 

или

 echo 'foo-|-bar' | awk -F '-\\|-' '{print $2}'