Настройка профиля Shadowsocks в GuixSystem

Исходные командные строки

Я думаю, что следующая командная строка сделает это с файлом, разделенным запятыми, пропуская «оскорбительные» строки,

grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv

Можно проверить с помощью небольшого файла с цветом,

grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'

и какие строки найдены поgrep(исключены в предыдущих командных строках по опции -v),

grep -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'

Следующая командная строка сделает это с файлом, разделенным табуляцией,

grep -v -e '\t[2-9]|' -e '|[2-9]:' Reddy.tab

или, если вам нужна более слабая проверка, может работать следующая командная строка:

grep -v -e '[2-9]|' -e '|[2-9]:' Reddy.tab file.csv

Командная строка в ответ на комментарий ОП

Я думаю, что следующая командная строка будет делать то, что хочет ОП, с файлами, разделенными запятыми, а также с файлами, разделенными табуляцией,

sed -e 's/[2-9]|[0-9]:[0-9]*/NA/' -e 's/[0-9]|[2-9]:[0-9]*/NA/' file.csv
1
07.12.2020, 16:57
1 ответ

Редактировать

Кто-то, кто лучше меня разбирался в исходном коде на момент написания этой статьи, разработал патч , который был отправлен в исходный поток Guix. Другими словами, эта проблема, скорее всего, скоро будет решена.

Исходное сообщение

Глядя на определение пакета для shadowsocks, оно кажется довольно пустым, даже без указания OpenSSL в качестве входных данных или чего-то подобного. Кроме того, похоже, что shadowsocks хочет, чтобы вы сохранили все эти пути в какой-то конфигурации.

config['crypto_path'] = {'openssl': config['libopenssl'],
                         'mbedtls': config['libmbedtls'],
                         'sodium': config['libsodium']}

Такие уловки могут быть безумно умными в традиционных дистрибутивах, таких как дистрибутивы, основанные на Debian и др., но они полностью ломаются при использовании в сочетании с любым видом функционального управления пакетами. Способ Guix для решения такого рода проблем состоит в том, чтобы жестко запрограммировать пути к своим входам во время сборки, используя substitute*. Ваша фаза может выглядеть следующим образом:

  (add-after 'unpack 'patch-crypto-paths
    (lambda* (#:key inputs #:allow-other-keys)
      (substitute* "shadowsocks/shell.py"
        (("config\\['libopenssl'\\]") 
         (string-append (assoc-ref inputs "openssl") "/path/to/libopenssl"))
        [...])
      #t))

[Поскольку вышеизложенное, очевидно, предназначено для кода Guix, вы можете свободно использовать его под GPLv3+, даже несмотря на то, что SO обычно предписывает CC BY -SA.]

Обратите внимание, что с недавнего времени окончание #tбольше не является обязательным, но я думаю, что вы все еще будете часто встречать его в коде Guix.

1
18.03.2021, 22:44

Теги

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