我有这个文件
10.1.1.1 www1
10.1.1.2 www2
10.1.1.3 www3
我想提取第一个IP address
字段并将其移动到以下位置http://www.foo.com=10.1.1.1/test.php
10.1.1.1 www1 # http://www.foo.com=10.1.1.1/test.php
10.1.1.2 www2 # http://www.foo.com=10.1.1.2/test.php
10.1.1.3 www3 # http://www.foo.com=10.1.1.3/test.php
我可以做到这一点,for loop
但我想sed
用单线技巧做到这一点。
答案1
sed 's@\([^ ]*\)\(.*\)@\1\2 #http://www.foo.com=\1/test.php@'
我用作
@
分隔符时不必在地址中使用反斜杠。IP 地址由 匹配
[^ ]*
,即非空白至少零次,并由\(\)
into捕获\1
。该行的其余部分被 捕获\2
,.*
即任何内容。
答案2
一行 awk 方法:(如果你真的不需要 awk,我会删除)
感谢 RomanPerekrest 的改进:
awk '{ $3="# http://www.foo.com="$1"/test.php" }1' $file
或者,如果您想要/需要在输出中保留选项卡:
awk 'BEGIN{OFS="\t";}{ $3="# http://www.foo.com="$1"/test.php" }1' $file