2015-09-07 88 views
-1

得到一个错误,试图用FreeBSDFreeBSD的sed的错误编辑文件

使用sed正在编辑文件的sed:-I或-i可能无法与标准输入

# Hello World Program in Bash Shell 
# This is a Linux Machine 
#cat /proc/version 
#Linux version 3.10.0-229.7.2.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)) #1 SMP Tue Jun 23 22:06:11 UTC 2015 
echo "Hello World!" 
FILE=new.txt 
FOO=/var/foo 
VAR=/var 

sed -i.tmp '/LD_LIBRARY_PATH={$stdlib}/a\'$'\n''LD_32_LIB_PATH='"$FOO"'\nldd '"$VAR"'' $FILE 
使用

我试图运行sed就地追加一个在RedHat Linux机器上正常工作的搜索模式。

我试图在FreeBSD机器上运行相同的命令(详细信息FreeBSD 8.1-RELEASE-p2 FreeBSD 8.1-RELEASE-p2 #0: Fri Jan 14 11:35:15 EST 2011),我得到了上述错误。

FreeBSD是否支持stdin的in-place替换?

+0

发布模式,不盲目链接... – 123

+0

您是否正在尝试'some-command | sed -i ...'? – anishsane

+0

究竟是如何取代stdin原地应该工作? –

回答

1

在FreeBSD上tcsh是标准shell,而不是bash

tcsh中设置变量是用set完成的,而不是用简单的=。 因此,在运行此脚本时未设置FILE变量,并且它会尝试编辑标准输入。

-i标志创建就地编辑文件的备份。这在像stdin这样的流的上下文中没有意义。因此错误信息。