С GNUsed
:
sed 's|\s*// characteristic_comment_to_delete.*||;T;/./!d'
T
— это расширение GNU, которое ответвляется , если предыдущая замена s
не была успешной. Поэтому, если ни один комментарий не был удален, мы разветвляемся, и следующий /./!d
(, который удаляет строку, если она не содержит хотя бы один символ ), пропускается.
Стандартный эквивалент:
sed '\/[[:space:]]*\/\/ characteristic_comment_to_delete.*/{s///;/./!d;}'
Или:
sed 's|[[:space:]]*// characteristic_comment_to_delete.*||
t 1
b
:1
/./!d'
Оба подавляют пустые строки, только если замена прошла успешно.
Пусть файл, в котором находятся ваши данные, будет input.txt
Используйте следующую команду для замены текста с помощью регулярных выражений. посетите($ man sed)для получения дополнительной информации
$ sed 's/^\.//' input.txt
Это выведет результат на вывод терминала.
При желании вы можете перенаправить вывод в файл, используя
$ sed 's/^\.//' input.txt > output.txt
Это зависит от того, что вы подразумеваете под «в bash» -это просто сделать в sed
или подобных текстовых редакторах на основе регулярных выражений -:
$ sed 's/^[.]//' example
test.example.com
123.example.com
999.example.com
asd.example.com
1.1.example.com
Квадратные скобки вокруг точки препятствуют тому, чтобы она имела голую интерпретацию регулярного выражения (, которая удалит любой одиночный начальный символ)-вы также можете использовать обратную косую черту s/^\.//
, чтобы сделать ее буквальной.