Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 在远程系统上使用sed命令_Shell_Unix - Fatal编程技术网

Shell 在远程系统上使用sed命令

Shell 在远程系统上使用sed命令,shell,unix,Shell,Unix,我正在本地计算机上使用以下命令,它会给出预期结果: sed -n 's/^fname\(.*\)".*/\1/p' file.txt 当我对远程系统中的同一文件使用相同的命令(仅更改为)时,我不会得到任何输出 ssh remote-system "sed -n "s/^fname\(.*\)".*/\1/p" file.txt" 请帮我更正。谢谢你的帮助。“和”在bash中是不同的东西,它们不可互换(它们在许多语言中都不可互换,但差异更微妙)。单引号的意思是“把这里的所有内容都当作字符串”。

我正在本地计算机上使用以下命令,它会给出预期结果:

sed -n 's/^fname\(.*\)".*/\1/p' file.txt
当我对远程系统中的同一文件使用相同的命令(仅更改为)时,我不会得到任何输出

ssh remote-system "sed -n "s/^fname\(.*\)".*/\1/p" file.txt"
请帮我更正。谢谢你的帮助。

在bash中是不同的东西,它们不可互换(它们在许多语言中都不可互换,但差异更微妙)。单引号的意思是“把这里的所有内容都当作字符串”。唯一需要解释的是下一个引语

双引号允许bash解释其中的内容

比如说,

echo "$TERM"

返回不同的东西

(未测试)您应该能够使用单引号并转义内部单引号:

ssh远程系统'sed-n's/^fname(.)“/\1/p\'file.txt”

看起来您可以发送带有序列的单个报价

因此:

这在我的机器上运行,如果我ssh到localhost,就不会有输出,因为file.txt是空的,但这是一个概念证明

或者-您可以交互地/使用herdoc执行ssh会话吗

ssh remote-system
[sed command]
exit
或者(同样未经测试,请查阅heredocs以了解更多信息)

ssh远程系统
在bash中是不同的东西,它们是不可互换的(在许多语言中它们是不可互换的,但是差异更微妙),单引号的意思是“这里的所有内容都是一个字符串”。唯一需要解释的是下一个引语

双引号允许bash解释其中的内容

比如说,

echo "$TERM"

返回不同的东西

(未测试)您应该能够使用单引号并转义内部单引号:

ssh远程系统'sed-n's/^fname(.)“/\1/p\'file.txt”

看起来您可以发送带有序列的单个报价

因此:

这在我的机器上运行,如果我ssh到localhost,就不会有输出,因为file.txt是空的,但这是一个概念证明

或者-您可以交互地/使用herdoc执行ssh会话吗

ssh remote-system
[sed command]
exit
或者(同样未经测试,请查阅heredocs以了解更多信息)


ssh远程系统使用单引号或转义符。'和“不可互换。我确实使用了单引号,但我得到了以下错误:
sed:-e expression#1,char 16:invalid reference\1 on
s'命令的RHS`记住ssh在远程端调用shell命令,因此,您需要两个级别的引用:一个用于本地shell,另一个用于远程shell。通常,在远程命令周围加上单引号并安排不加单引号地编写该命令更容易。请使用单引号或转义及“不可互换。我确实使用了单引号,但我得到了以下错误:
sed:-e expression#1,char 16:invalid reference\1 on
s'命令的RHS`记住ssh调用远程端的shell命令,因此需要两个级别的引号:一个用于本地shell,另一个用于远程shell。”。通常,在远程命令周围加上单引号并安排不加单引号地编写该命令更容易。
ssh远程系统的sed-n/^fname\(.*)“*/\1/p\'file.txt'
不起作用。声明也没有完成。此外,我还必须在脚本中使用我用更新编辑过的语句,转义的引号只是猜测,我从未实际使用过它们。
ssh远程系统的sed-n/^fname\(.*)“*/\1/p\'file.txt'
不起作用。声明也没有完成。另外,我必须在脚本中使用我用更新编辑过的语句,转义的引号只是猜测,我从来没有实际使用过它们。
ssh remote-system <<-EOF
    [sed command]
EOF