首页 > 解决方案 > How to find IP address in line and append it to the end of line - with sed

问题描述

我需要一个 sed 解决方案来修改以下文件:我有一个文本文件,每行都包含一个 IP 地址。我需要将 IP 地址(连同其他一些文本)复制到行尾:

前:

SOMETEXT <IP address>

后:

SOMETEXT <IP address> TEXT1 <IP address> TEXT2

我可以单独将文本添加到行尾

sed -e 's/$/ TEXT1 /' -i filename

我还可以从以下行中获取 IP

sed -n 's/.*\(\(\(^\| \)[0-9]\{1,3\}\.\)\{1\}\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}\) .*/\1/gp' filename

只是我不能将这两个编译在一起。:)

谢谢。

标签: bashsed

解决方案


假设您的表达有效(又名:我自己没有尝试过):

sed -n 's/\(\(\(^\| \)[0-9]\{1,3\}\.\)\{1\}\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}\) .*/\1 TEST1 \1 TEXT2/gp' filename

推荐阅读