Стефан уже предоставил правильное sed
решение. Вот небольшая и немного более явная альтернатива Python 3:
#!/usr/bin/env python3
import sys
with open(sys.argv[1]) as f:
for line in f:
beginning = True
for char in line:
if beginning and char == " ":
print("-",end="")
else:
beginning = False
print(char,end="")
Пробный запуск:
# This is the input text
$ cat -A input.txt
wqdq$
wqdqgrhehr$
cnkzjncicoajc$
hello space$
oejwfoiwejfow$
wqodojw$
more spaces$
more$
$
$
$
# And this is the output with the given python script
$./add_dashes.py./input.txt
-wqdq
-wqdqgrhehr
-cnkzjncicoajc
-hello space
----oejwfoiwejfow
----wqodojw
----more spaces
----more
----
-
--
Официальные исходные коды ядра Linux включают в себя инфраструктуру для непосредственной сборки пакета Debian или RPM для ядра, модулей ядра и заголовков ядра, но исходные разработчики на kernel.org сами не распространяют эти пакеты. Существует небольшое количество других проектов (, обычно небольших ), в которых применяется аналогичный подход. Я бы сказал, что это, вероятно, единственный пример пункта 3, который большинство людей узнают (, и он почти наверняка самый распространенный, хотя большинство людей, которые собирают свои собственные ядра из исходных кодов, обычно просто пропускают работу с менеджером пакетов и установить ядро и модули напрямую ).
Немного ОТ, но я считаю, что стоит отметить, что большинство менеджеров пакетов не различают вещи таким образом напрямую, им важно только, из какого репозитория был получен пакет или был ли он установлен вручную как локальный пакет,и их не волнует, собирается ли то, что вы устанавливаете вручную, локально или нет (, и, таким образом, случаи 2, 3 и 4 выше обрабатываются одинаково практически всеми существующими менеджерами пакетов ).