我需要以下文件修改的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
简而言之,我无法将两者一起编译。 :)
谢谢。
答案 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