【发布时间】:2015-10-05 11:30:18
【问题描述】:
所以我遇到的问题是我正在使用 sed 从 bash 脚本中的字符串中提取一堆对象,但我需要将相同的字符串添加到 sed 输出的开头。一个例子:
数据:
|field1|field2|select * from object1, object2|
sed 输出:
object1|
object2|
我尝试过的:
将整行粘贴到一个名为LINE的变量中,然后:
sed "s/^.*/$LINE&/g"
这导致错误提示:
s 的未知选项
echo $LINE
|field1|field2|select * from object1, object2|
所以变量没有问题。
这是所需的输出:
|field1|field2|select * from object1, object2|object1|
|field1|field2|select * from object1, object2|object2|
真诚感谢任何帮助:)
-瑞恩
【问题讨论】:
-
line='|field1|field2|select * from object1, object2|'; sed "s/^.*/$line&/g" <<< $'object1|\nobject2|'在这里按预期工作。 -
是的,它可以从命令行工作。不是来自 bash 脚本...
-
然后显示你的脚本!
-
echo $LINE是错误的。您需要echo "$LINE"来显示变量LINE的内容。如所写,LINE可能包含多个换行符,而您永远不会知道它(当然,sed命令失败除外 :-))。您的代码中有几个基本的 shell 编程错误 - 我建议您阅读 Chris Johnson 的《Shell Scripting Recipes》一书。 -
Ed,虽然我很欣赏你花时间回复这个事实,但我不欣赏你的回复本身。我使用了
echo $LINE,因为没有换行符。此外,您所说的我的“代码”包含上面示例中的所有两行,因此我看不到您所说的“几个基本的 shell 编程错误”。当你心情不好并且想对某人抱怨时,不要在这里这样做。