如何在一行中找到IP地址并将其附加到行末-使用sed

时间:2018-08-03 18:24:30

标签: bash 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

简而言之,我无法将两者一起编译。 :)

谢谢。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

能否请您关注awk

awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){$0=$0 " TEXT1 " substr($0,RSTART,RLENGTH) " TEXT2"} 1' Input_file

或者在此处也添加非单一衬里形式的解决方案。

awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)
{
  $0=$0 " TEXT1 " substr($0,RSTART,RLENGTH) " TEXT2"
}
1' Input_file

答案 2 :(得分:0)

sed 's/\(\([0-9]\{1,3\}[.]\)\{3\}[0-9]\{1,3\}\)/\1 TEXT1 \1 TEXT2/' in