在Unix环境中使用文本操作将字符串包装在标记中



我有一个文本文件,输出如下:

/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或类似软件可能实现的吗?

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

如果要直接替换文件的内容,请添加-i(但需要确保该命令工作正常(。更安全,你可以做:

sed 's,^(/usr/local/jack/var/[0-9]*)(/.*)$,<a href="http://jack.localnet/viewvc/123452?view=markup">12</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,这正常吗?

最新更新