2016-09-18 44 views
0

在輸入管道上使用SED時,如何將輸入插入將作爲linux命令使用的文本中間?使用SED管道輸入時的Concat文本

echo foobar | sed 's/^/one two /' 

這將輸出one two foobar

我該如何使用SED重新格式化它,以便管道值在one foobar two之間?

我已經嘗試在一行中管道兩個SED命令,但是這不起作用,格式化會搞砸。所以即時通訊尋找一種方法來完成一個單一的SED命令。

+0

使用兩個'sed的s'一個用於開始,一個用於結束:例如'回聲foobar | sed's/^/one /; s/$/two /'' –

回答

2
echo foobar | sed 's/\(.*\)/one \1 two/' 

輸出:

 
one foobar two 
+1

或者'echo foobar | sed's /.*/ one&two /'' – John1024

+0

如果結果要作爲命令使用,並且在Linux上,可能會在sed'e'選項中使用,例如在'echo foobar | sed's /.*/ one&two/e''(將運行'foobar two')。 – Qeole

+0

@ John1024:是的,好主意。 – Cyrus

0

隨着perl

$ echo foobar | perl -lne 'print "one $_ two"' 
one foobar two 
  • -l選項去掉從輸入線換行,並再次將其添加到print聲明
  • $_默認變量續癌寧輸入線

同樣與awk

$ echo foobar | awk '{print "one " $0 " two"}' 
one foobar two 
  • 空間周圍$0是可選的,用於爲清楚起見