Обернуть строку в теги, используя текстовые манипуляции в среде Unix - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть текстовый файл, который выводит, как показано ниже:

    /usr/local/jack/var/12345/configs/10.254.254.254
    1845:    edit "n_10.73.6.0/24"
    1847:        set subnet 10.73.6.0 255.255.255.0
    2161:        set member "n_10.73.8.0/24" "n_10.73.1.0/24" "n_10.73.2.0/24" "n_10.73.3.0/24" "n_10.73.4.0/24" "n_10.73.5.0/24" "n_10.73.6.0/24" "n_10.73.7.0/24" "n_10.73.9.0/24"
    7030:        set dst 10.73.6.0 255.255.255.0

    /usr/local/jack/var/12346/configs/10.254.254.255
    1845:    edit "n_10.73.6.0/24"
    1847:        set subnet 10.73.6.0 255.255.255.0
    2161:        set member "n_10.73.8.0/24" "n_10.73.1.0/24" "n_10.73.2.0/24" "n_10.73.3.0/24" "n_10.73.4.0/24" "n_10.73.5.0/24" "n_10.73.6.0/24" "n_10.73.7.0/24" "n_10.73.9.0/24"
    7030:        set dst 10.73.6.0 255.255.255.0
    8 matches
    2 files contained matches
    931 files searched
    31258200 bytes searched
    0.056300 seconds
    logout

Я хочу иметь возможность превратить путь к файлу в гиперссылку, основанную на самом пути к файлу.Например:

/usr/local/jack/var/12346/configs/10.254.254.255

станет:

<a href="http://jack.localnet/viewvc/12345/configs/10.254.254.255?view=markup">/usr/local/jack/var/12346/configs/10.254.254.255</a>

В этом файле может быть 1,2 или сотни вхождений.Я хочу сделать так, чтобы каждое вхождение было заменено гиперссылкой.

Это возможно с bash, sed, awk, python или аналогичным?

1 Ответ

0 голосов
/ 16 ноября 2018
sed 's,^\(/usr/local/jack/var/[0-9]*\)\(/.*\)$,<a href="http://jack.localnet/viewvc/12345\2?view=markup">\1\2</a>,g' file.txt

добавьте -i, если вы хотите заменить содержимое файла напрямую (но вы должны быть уверены, что команда работает нормально).Безопаснее, вы можете сделать:

sed 's,^\(/usr/local/jack/var/[0-9]*\)\(/.*\)$,<a href="http://jack.localnet/viewvc/12345\2?view=markup">\1\2</a>,g' file.txt > new_file.txt

Результат:

<a href="http://jack.localnet/viewvc/12345/configs/10.254.254.254?view=markup">/usr/local/jack/var/12345/configs/10.254.254.254</a>
1845:    edit "n_10.73.6.0/24"
1847:        set subnet 10.73.6.0 255.255.255.0
2161:        set member "n_10.73.8.0/24" "n_10.73.1.0/24" "n_10.73.2.0/24" "n_10.73.3.0/24" "n_10.73.4.0/24" "n_10.73.5.0/24" "n_10.73.6.0/24" "n_10.73.7.0/24" "n_10.73.9.0/24"
7030:        set dst 10.73.6.0 255.255.255.0

<a href="http://jack.localnet/viewvc/12345/configs/10.254.254.255?view=markup">/usr/local/jack/var/12346/configs/10.254.254.255</a>
1845:    edit "n_10.73.6.0/24"
1847:        set subnet 10.73.6.0 255.255.255.0
2161:        set member "n_10.73.8.0/24" "n_10.73.1.0/24" "n_10.73.2.0/24" "n_10.73.3.0/24" "n_10.73.4.0/24" "n_10.73.5.0/24" "n_10.73.6.0/24" "n_10.73.7.0/24" "n_10.73.9.0/24"
7030:        set dst 10.73.6.0 255.255.255.0
8 matches
2 files contained matches
931 files searched
31258200 bytes searched
0.056300 seconds
logout

это нормально, если 12346 становится 12345?

...