2015-09-07 33 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這樣的流的上下文中沒有意義。因此錯誤信息。