Unexpected EOF while looking for matching ' " '

Shortawkрешение:

awk -F'_' '$0~/^>/{ $0=$0 FS $NF }1' file

Вывод:

>13_gnd_gnd
atcg
>14_galF_galF
atgc

Детали:

  • -F'_'- разделитель полей

  • $0~ /^>/- выполняет действие, если строка начинается с >

  • $0=$0 FS $NF- добавляет в конец последнее значение поля

1
26.03.2016, 14:41
1 ответ

Цитирование в целом выглядит нормально, но вы, вероятно, столкнулись с проблемами с этой строкой:

export JAVA_HOME=${"C:\Java\"}

Первое использование " - это не экранирован, а второй -. Символ '\' действует как escape в сценариях оболочки, изменяя значение следующего символа. Оболочка не может сказать, что у вас может быть предназначен для предоставления обратной косой черты в конце, например, в порту Cygwin или MinGW. Если вы сделали , удвоение каждой из обратных косых черт - способ сделать это.

Что-то, что нужно проверить: будет ли ваша среда выполнения переводить прямые косые черты и обратные косые черты, например, чтобы успокоить базовую систему Windows. Если вы можете, это упрощает работу со сценарием.

Обращение к комментарию, в

export JAVA_HOME=${"C:\Java\"}

$ { и } бесполезны. Вы можете сделать то, что необходимо, с помощью только

export JAVA_HOME="C:\\Java\\"

Расширение параметра '$ { и'} разделитель . В принципе, вы можете выполнить подмена в фигурных скобках, например, для замены косой черты на обратную:

FORWARD_HOME='C:/Java/'
export JAVA_HOME=${FORWARD_HOME//\//\\}

Дополнительная литература:

4
27.01.2020, 23:19

Теги

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