sed 提取第一个字段并移动到特定位置

Sat*_*ish 2 linux sed regular-expression

我有这个文件

10.1.1.1    www1           
10.1.1.2    www2           
10.1.1.3    www3            
Run Code Online (Sandbox Code Playgroud)

我想提取第一个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
Run Code Online (Sandbox Code Playgroud)

我可以做到这一点,for loop但我想sed用单线技巧来做到这一点。

cho*_*oba 5

sed 's@\([^ ]*\)\(.*\)@\1\2 #http://www.foo.com=\1/test.php@'
Run Code Online (Sandbox Code Playgroud)
  • 我用作@分隔符不必对地址中的斜杠进行反斜杠。

  • IP 地址由 匹配[^ ]*,即非空白至少零次,并由\(\)into捕获\1。该行的其余部分被捕获到\2.*,即任何东西。