Я думаю, что следующая командная строка сделает это с файлом, разделенным запятыми, пропуская «оскорбительные» строки,
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
Кто-то, кто лучше меня разбирался в исходном коде на момент написания этой статьи, разработал патч , который был отправлен в исходный поток 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.