2015-10-05 66 views
1

所以我遇到的问题是我使用sed从bash脚本中的字符串中抽出一堆对象,但我需要将相同的字符串添加到sed输出的开始。举个例子:如何将行添加到sed输出的开头

数据:

|字段1 |科研成果| SELECT * FROM object1,对象2 |

SED输出:

object1| 
object2| 

我已经试过什么:

坚持整条生产线到一个名为LINE变量,则:

sed "s/^.*/$LINE&/g" 

这导致错误那说:

未知的选项送

echo $LINE 
|field1|field2|select * from object1, object2| 

所以这是没有错的变量。

这是所需的输出:

| FIELD1 | FIELD2 | SELECT * FROM object1,Object2的| object1 |

| field1 | field2 | select * from object1,object2 | object2 |

任何帮助表示衷心感谢:)

-Ryan

+1

'line ='| field1 | field2 | select * from object1,object2 |'; sed“s /^.*/$ line&&g”<<< $'object1 | \ nobject2 |''在这里按预期工作。 –

+0

是的,它从命令行工作。不是从bash脚本中输入... –

+1

然后显示你的脚本! –

回答

4

一些在你的字符串中的字符的中美战略经济对话正在解释。为了避免这个问题,你应该使用基于字符串的方法,而不是基于正则表达式的方法。例如,使用AWK:

awk -v line="$line" '{ print line $0 }' file 

这增加了在壳可变$line的字符串在file每行的开始。

+0

...实际上它看起来像字符串可以安全地用在你已经显示的情况下,但是我会推荐这种方法。 –

+0

我爱你...像一个魅力工作 –

+1

这是一个很好的建议!但是,要注意'awk'可以在反斜杠上窒息... –