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