有没有办法在bash中获得未解释的字符串-它可以包含单引号和双引号以及Bang!等
我想做类似的事情
#!/bin/bash
echo -e "Line One\nLine Two\nLine three" | python -c """
import sys
for line in sys.stdin.readlines():
print "STDIN: %s" %line
""" | awk '{print $2}'
问题是零STDIN:打印了行-stdin没有通过管道传递到python程序。
这是一个用例:请注意,输入大小可以是低GB的大小:
猫“ my10GBfile.dat” | python -c“”“ ..等
现在在那里使用HEREDOC
#!/bin/bash
echo -e "Line One\nLine Two\nLine three" | python<<-HERE
some
multiline
python
program
HERE
| awk '{print $2}'
有一个问题,即标准输入被采用-因此输入丢失。
我真正想要的是bash中未解释的多行字符串。
您能否举一个更接近于您实际想要做的例子,即理论上少一点和实践上一点?我发现,到目前为止,您要完成的工作存在一些歧义(您说STDIN丢失了,但是您没有说明应如何使用它-某些特定任务可能有解决方法)。
—
Daniel Andersson
@Daniel我在python中添加了print语句,并解释说它们不打印任何内容。
—
javadba
请注意,自然的方法是直接从Python内部访问文件。您很可能可以直接在本机Python中使用AWK和其他CLI工具执行所有操作,并且可能会大大提高速度。该外壳功能强大,但是当混合中已经添加了更完整的脚本语言(通常是Perl / Python)时,就可以发挥更大的功能。如果Python函数很简单,则另一种可能性是扩展AWK以在脚本中执行其职责并将文件名直接传递给AWK。
—
Daniel Andersson
cat
以这种方式使用很少是“正确的”方法。
@Daniel。原则上不要不同意。我在几百到低K的行中都有python脚本。有时已经将东西编码在带壳的东西中,不想干扰它们,只需插入一个步骤,在这种情况下,python也是一个选择。
—
javadba