Aproximación cortased
:
sed -E 'N; s/\n([^[:space:]]*,[^[:space:]]+)/\1/' file
La salida:
1234 1234 dei_1/3,dei_2/3,dei_9/0,dei_10/0,dei_8/4
2345 2345 dei_8/9,dei_5/6,dei_4/9
4244 4244 dei_0/9,dei_4/6,dei_4/1
4235 4235 dei_0/9,dei_4/6,dei_4/,dei_9/7,dei_1/3,dei_2/3,dei_9/0
/usr/bin/linkhandler: 10: /usr/bin/linkhandler: : Permission denied
Это сообщение об ошибке от оболочки, выполняющей сценарий. Это немного неудобно читать, но есть 10
, который может быть номером строки, и стоит обратить внимание на странное двойное двоеточие : :
перед сообщением об ошибке Permission denied
. Как будто перед вторым двоеточием должна быть еще одна строка, но эта строка пуста.
Ваша строка 10
[ -z "$1" ] && { "$BROWSER"; exit; }
И потенциальная проблема заключается в том, что $BROWSER
может быть пустым. Это по-прежнему не объясняет, почему имя скрипта снова присутствует, или если пустое значение вызовет эту ошибку. Итак, давайте попробуем воспроизвести это:
$ cat foo.sh
#!/bin/dash
unset FOO
"$FOO"
$./foo.sh
./foo.sh: 3:./foo.sh: : Permission denied
В Dash, Debian и Ubuntu /bin/sh
сообщение об ошибке при выполнении команды с пустым сообщением выглядит очень похоже, и действительно, по какой-то причине имя сценария дублируется в сообщении об ошибке. (В Bash сообщение об ошибке будет другим.)
Итак, может показаться, что проблема действительно в том, что $BROWSER
пусто. Вы можете проверить это с помощью [ -z "$BROWSER" ]
или указать значение по умолчанию, используя "${BROWSER-/usr/bin/sensible-browser}"
с соответствующим путем.