сценарий оболочки - Удалить символ перед определенным шаблоном

Вам действительно следует использовать либо gpg-agent, либо аналогичную программу, предоставляемую Gnome. Таким образом, ваша система будет запрашивать кодовую фразу только один раз при загрузке.

0
30.04.2019, 11:11
4 ответа

Команда

sed  "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename

выход

sed  "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename
192.168.54.144  name1
192.168.54.144   name2
192.168.54.143   name3
0
28.01.2020, 02:30
cat myfile | tr -d '#'

Просто с tr!

-1
28.01.2020, 02:30

Пробовал использовать Python, все работает нормально

#!/usr/bin/python
import re
g=re.compile(r'[0-9]*\.[0-9]*\.[0-9]*')
m=open('u.txt','r')
for i in m:
    if re.search(g,i):
        print i.strip().replace("#","")

вывод 1

92.168.54.144  name1
192.168.54.144   name2
192.168.54.143   name3
0
28.01.2020, 02:30

Использование GNUsed:

Соответствие только реальному IP-адресу(через):

sed -E 's/^#(((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]))/\1/' file

или простое сопоставление, которое проверяет цифру после#:

sed 's/^#\([[:digit:]]\)/\1/' file

Это просто распечатает результат, добавьте -iдля редактирования файла на месте.


Вы также можете использовать perlс lookehead, чтобы не нуждаться в обратной ссылке:

perl -pe 's/^\#(?=[[:digit:]])//' file
3
28.01.2020, 02:30

Теги

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