как извлечь служебные имена из файла и сохранить их в чистой версии в файле? [закрыто]

В соответствии с этим сообщением вы можете сгенерировать пакет .deb после компиляции источников. Затем вместо «make install» вы можете установить из пакета .deb. Это облегчает обновление (если это было в каком-то репозитории), потому что пакет будет управляться менеджером пакетов, который отслеживает обновление.

В случае создания пакета «some-package» из источников и есть зависимости, вы можете попробовать «apt-get build-dep some-package» для автоматической установки всех зависимостей, необходимых вам для компиляции вашего пакета, без ручного отслеживания каждой зависимости самостоятельно. Таким образом, зависимости также управляются диспетчером пакетов и также должны обновляться автоматически.

0
задан 10 March 2018 в 23:30

4 ответа

Вот мое решение sed:

</etc/services sed '/^\w/!d;s/\s.*//' | sort -u >out

sed '…' file вместо <file sed '…' возможно, но не предпочтительнее, как объясняет Стефан Чазелас.

Это сначала устранит каждая строка начинается с чего-то другого, кроме символа слова, а затем удаляет все из каждой строки, начинающейся с первого символа пробела, затем сортирует по алфавиту и удаляет повторяющиеся строки и, наконец, перенаправляет вывод в файл out.

Чтобы получить количество строк этого файла, я бы использовал wc:

<out wc -l

Пояснения

</etc/services - пусть bash откроет указанный файл и назначит его content to stdin, не имеет значения, было ли это перенаправление размещено до или после команды, вы даже можете сделать >out sed '…' <in, если вам нравится sed '…' - пусть sed выполнит выражения … /^\w/!d - don ' t (!) d elete каждое начало строки (^) с символом w ord, но каждая строка, которая не соответствует этому критерию s/\s.*// - в каждой строке, s совпадение белого символа темпа s и всего (.* ), который следует без ничего (= удалить его) command1 | command2 - пусть bash присваивает stdout command1 [stdout] command2 'stdin sort -u - пусть sort сортирует строки по алфавиту и выводит только первый из (-u или --unique) >out - разрешить bash перенаправить stdout в указанный файл wc -l - позволить wc распечатать новые l ine counts
1
ответ дан 17 July 2018 в 19:07
[F1]
-1
ответ дан 17 July 2018 в 19:07

Вот мое решение sed:

</etc/services sed '/^\w/!d;s/\s.*//' | sort -u >out

sed '…' file вместо <file sed '…' возможно, но не предпочтительнее, как объясняет Стефан Чазелас.

Это сначала устранит каждая строка начинается с чего-то другого, кроме символа слова, а затем удаляет все из каждой строки, начинающейся с первого символа пробела, затем сортирует по алфавиту и удаляет повторяющиеся строки и, наконец, перенаправляет вывод в файл out.

Чтобы получить количество строк этого файла, я бы использовал wc:

<out wc -l

Пояснения

</etc/services - пусть bash откроет указанный файл и назначит его content to stdin, не имеет значения, было ли это перенаправление размещено до или после команды, вы даже можете сделать >out sed '…' <in, если вам нравится sed '…' - пусть sed выполнит выражения … /^\w/!d - don ' t (!) d elete каждое начало строки (^) с символом w ord, но каждая строка, которая не соответствует этому критерию s/\s.*// - в каждой строке, s совпадение белого символа темпа s и всего (.* ), который следует без ничего (= удалить его) command1 | command2 - пусть bash присваивает stdout command1 [stdout] command2 'stdin sort -u - пусть sort сортирует строки по алфавиту и выводит только первый из (-u или --unique) >out - разрешить bash перенаправить stdout в указанный файл wc -l - позволить wc распечатать новые l ine counts
1
ответ дан 23 July 2018 в 19:54
  • 1
    Это здорово. Я признаю, что я всегда спотыкаюсь, когда вижу перед собой [@ d0] перенаправление в неожиданных местах, т. Е. [D0], вместо фактической команды вместо после . – PerlDuck 11 March 2018 в 16:57
[F1]
-1
ответ дан 23 July 2018 в 19:54
  • 1
    Неверный порядок команд. Положите uniq после sort. И grep также удалит строки с завершающими комментариями. – PerlDuck 11 March 2018 в 12:52
  • 2
    sort -u также доступен. – pa4080 11 March 2018 в 13:03
  • 3
    Вероятно, вы имели в виду grep -v \#, иначе эта командная строка вообще не работает, но даже тогда на выходе все еще есть пустые строки, а также двойные записи - вы проверили свое решение? – dessert 11 March 2018 в 14:47
  • 4
    @dessert Даже grep -v \# не поможет. У меня есть строки вроде ssh 22/tcp # SSH …, и они будут отфильтрованы. – PerlDuck 11 March 2018 в 15:00
  • 5
    десерт, тсш. Для bash grep -v '#' – Josef Klimuk 11 March 2018 в 15:09

Другие вопросы по тегам:

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