标签: piping

用bash管道stdout和stderr?

似乎较新版本的bash具有&>运算符,如果我理解正确的话,将stdout和stderr重定向到一个文件(&>>改为附加到文件,就像Adrian澄清的那样).

实现相同目标的最简单方法是什么,而是管道到另一个命令?

例如,在这一行:

cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError
Run Code Online (Sandbox Code Playgroud)

我希望grep能够匹配stdout和stderr中的内容(实际上,将它们组合成一个流).

注意:这个问题是询问管道,而不是重定向 - 因此它不是它当前标记为重复的问题的副本.

bash stdout stderr piping

141
推荐指数
2
解决办法
8万
查看次数

为什么管道输入"读取"仅在输入"while read ..."构造时有效?

我一直在尝试从程序输出中读取环境变量的输入,如下所示:

echo first second | read A B ; echo $A-$B 
Run Code Online (Sandbox Code Playgroud)

结果是:

-
Run Code Online (Sandbox Code Playgroud)

A和B都是空的.我读到了bash在子shell中执行管道命令,并且基本上阻止了管道输入读取.但是,以下内容:

echo first second | while read A B ; do echo $A-$B ; done
Run Code Online (Sandbox Code Playgroud)

似乎工作,结果是:

first-second
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这里的逻辑是什么吗?是while...... done构造中的命令实际上是在同一个shell中执行echo而不是在子shell中执行?

bash pipe while-loop piping

69
推荐指数
3
解决办法
3万
查看次数

将远程文件放入hadoop而不将其复制到本地磁盘

我正在编写一个shell脚本,一旦生成数据就将数据放入hadoop.我可以ssh到我的主节点,将文件复制到那里的文件夹,然后将它们放入hadoop.我正在寻找一个shell命令来摆脱将文件复制到主节点上的本地磁盘.为了更好地解释我需要什么,在下面你可以找到我到目前为止所拥有的:

1)将文件复制到主节点的本地磁盘:

scp test.txt username@masternode:/folderName/
Run Code Online (Sandbox Code Playgroud)

我已经使用密钥设置了SSH连接.因此,不需要密码来执行此操作.

2)我可以使用ssh远程执行hadoop put命令:

ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是如何将这两个步骤组合成一个并跳过masterNode本地磁盘上的文件的本地副本.

谢谢

换句话说,我想以我能够的方式管理几个命令

unix ssh hadoop copying piping

34
推荐指数
2
解决办法
5万
查看次数

在Unix上结合echo和cat

真的很简单的问题,如何在shell中组合echo和cat,我正在尝试将文件的内容写入另一个带有前置字符串的文件中?

如果/ tmp/file看起来像这样:

this is a test
Run Code Online (Sandbox Code Playgroud)

我想运行这个:

echo "PREPENDED STRING"
cat /tmp/file | sed 's/test/test2/g' > /tmp/result 
Run Code Online (Sandbox Code Playgroud)

所以/ tmp/result看起来像这样:

PREPENDED STRINGthis is a test2
Run Code Online (Sandbox Code Playgroud)

谢谢.

unix shell piping

31
推荐指数
2
解决办法
4万
查看次数

从命令行调用PHP时设置$ _SERVER变量?

是否可以通过命令行将$ _SERVER变量传递给PHP脚本?

具体来说,我试图手动设置$ _SERVER ['recipient'],这样我就可以在不设置邮件服务器的情况下测试电子邮件管道.

php email command-line-interface piping

27
推荐指数
1
解决办法
2万
查看次数

dplyr中的链算术运算符,%>%pipe

我想知道为什么,在中dplyrmagrittr包装,更具体的链接功能%>%有一定的麻烦与基础运营商+,-,*,和/

Chaining获取前一个语句的输出并将其作为下一个语句的第一个参数提供:

1:10 %>% sum
# [55]
Run Code Online (Sandbox Code Playgroud)

那么为什么这不起作用

1:10 %>%  *2 %>% sum
1:10 %>% .*2 %>% sum
Run Code Online (Sandbox Code Playgroud)

我还发现以下语法适用于添加/减少,但不能乘法或除法.为什么这样?

1:10 %>% +(2) # works OK
1:10 %>% *(2) # nope...
Run Code Online (Sandbox Code Playgroud)

那么我应该写一个匿名函数甚至*2对我的data.frame 进行操作吗?

1:10 %>% (function(x) x*2) %>% sum
Run Code Online (Sandbox Code Playgroud)

谢谢,我在其他SO问题中找不到答案.

r piping dplyr magrittr

24
推荐指数
2
解决办法
5890
查看次数

从单击命令调用另一个单击命令

我想使用一些有用的函数作为命令.为此我正在测试click库.我定义了我的三个原始函数,然后装饰为click.command:

import click
import os, sys

@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=True)
def add_name(content, to_stdout=False):
    if not content:
        content = ''.join(sys.stdin.readlines())
    result = content + "\n\tadded name"
    if to_stdout is True:
        sys.stdout.writelines(result)
    return result


@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=True)
def add_surname(content, to_stdout=False):
    if not content:
        content = ''.join(sys.stdin.readlines())
    result = content + "\n\tadded surname"
    if to_stdout is True:
        sys.stdout.writelines(result)
    return result

@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=False)
def add_name_and_surname(content, to_stdout=False):
    result = add_surname(add_name(content))
    if to_stdout is True:
        sys.stdout.writelines(result) …
Run Code Online (Sandbox Code Playgroud)

python stdout piping command-line-arguments python-click

17
推荐指数
3
解决办法
1万
查看次数

使C代码自动绘制图形

我编写了一个程序,将一个数据列表写入'.dat'文件,然后使用gnuplot单独绘制它.有没有办法让我的代码自动绘制它?我的输出形式如下:

x-coord    analytic    approximation
x-coord    analytic    approximation
x-coord    analytic    approximation
x-coord    analytic    approximation
x-coord    analytic    approximation
 ....
Run Code Online (Sandbox Code Playgroud)

理想情况下,当我运行代码时,图形也将打印出x标签,y标签和标题(可以从我的C代码更改).非常感谢.

c gnuplot piping numerical-methods

16
推荐指数
2
解决办法
8万
查看次数

彼得派珀吹嘘一个Python程序 - 并失去了他所有的unicode角色

我有一个Python脚本,它使用加载网页urllib2.urlopen,做一些不同的魔法,然后使用它来吐出结果print.然后,我们在Windows上运行该程序,如下所示:

python program.py > output.htm
Run Code Online (Sandbox Code Playgroud)

这是问题所在:

urlopen从其输出UTF8 IIS Web服务器读取数据.它会将相同的数据吐出到输出中,但是某些字符(例如Word总是会根据您的意愿为您插入的长连字符,因为它比您更聪明)会出现乱码并最终变形–.

经过进一步调查,我注意到即使Web服务器吐出UTF8数据,该output.htm文件也使用ISO-8859-1字符集进行编码.

我的问题:

  1. 当您将Python程序重定向到Windows上的输出文件时,它是否始终使用此字符集?
  2. 如果是这样,有没有办法改变这种行为?
  3. 如果没有,是否有解决方法?我想我可以直接output.htm作为命令行参数传入并写入该文件而不是屏幕,但我必须在我的程序中重做一大堆逻辑.

谢谢你的帮助!

更新:

output.htm我的顶部添加:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Run Code Online (Sandbox Code Playgroud)

但是,它没有任何区别.角色仍然是乱码.如果我在Firefox中手动切换到UTF-8,则文件会正确显示.IE和FF都认为这个文件是Western ISO,尽管它显然不是.

python utf-8 iso-8859-1 character-encoding piping

16
推荐指数
2
解决办法
382
查看次数

magrittr中%>%和%,%之间有什么区别?

Github开发版的magrittr包含了一些很酷的新功能,但是我并没有完全理解%>%和之间的区别%,%.这只是%>%价值和%,%功能的正式,还是有一些特殊的特点?

r piping magrittr

14
推荐指数
1
解决办法
627
查看次数