Для всех, кому интересно, я вывел решение Рафаэля в новый JSON-файл с помощью этой команды:
cat uir-index.json| jq 'select(.id|startswith("eprints.ulster.ac.uk/view/")|not )' > cleaned-uir-index.json
Формат вывода вернулся к многострочным блокам кода. Я выполнил ту же команду jq с опцией "--compact-output / -c" следующим образом:
cat uir-index.json| jq -c 'select(.id|startswith("eprints.ulster.ac.uk/view/")|not )' > cleaned-uir-index.json
Это вывело очищенный файл в формате новой строки.
qsub -v varname=value
задает для varname
значение value
, указанное в среде отправленного задания.
В отправляемом сценарии вы используете это значение в команде grep
, но строка, содержащая переменную, заключена в одинарные кавычки, что препятствует ее расширению оболочкой.
Вместо этого ваш скрипт должен использовать
grep "^$mold[[:blank:]]H" temp_4n.in | tail -1 > temp_5n.in
Начальный $
в вашем коде($'...'
)здесь не нужен, вместо этого мы используем [[:blank:]]
для соответствия пробелу или табуляции.
Альтернативой может быть использование awk
в вашем скрипте:
awk -v mold="$mold" '$1 == mold && $2 == "H" { this = $0 } END { print this }' temp_4n.in >temp_5n.in
При этом используются сравнения строк (, а не регулярные выражения )для проверки первого и второго столбца, и когда совпадающая строка найдена, вся строка сохраняется в переменной this
. В конце печатается последнее значение this
. Это заменяет как grep
, так и tail
.