2013-03-09 82 views
0

我在我的mac終端上製作sed工作時遇到了麻煩。原來的版本我是/ usr/bin中/ sed的 我想看看它是什麼版本,所以我鍵入:mac終端的sed有問題嗎?

sed --version 

我得到以下輸出:

在/ usr/bin中/ sed的:非法選項 - 用法:sed腳本[-Ealn] [-i 擴展名] [文件...] sed [-Ealn] [-i擴展名] [-e腳本] ... [-f script_file] ... [文件...]

我的手冊頁是sed 4.2,應該有一個--version選項

然後我從GNU FTP下載http://ftp.gnu.org/gnu/sed/

安裝到/ usr/local/bin目錄我然後運行/usr/local/bin/sed --version,仍然可以得到相同的輸出與原始版本。我完全困惑,誰能弄清楚我做錯了什麼?

編輯:好像即使其中的sed給我在/ usr/local/bin目錄/ sed的sed的命令仍在運行在/ usr/bin中/ sed的,因此在/ usr /本地/ bin/sed未被調用。如果我使用完整路徑調用,它按預期工作。

我想問題是,爲什麼現在其中的sed是給我在/ usr/local/bin目錄/ sed的尚未運行的命令,當我鍵入的sed在/ usr/bin中/ sed的

回答

2

您的/usr/bin/sed是BSD sed,它不支持--version,正如您的錯誤聲明所示。它的手冊頁是/usr/share/man/man1/sed.1.gz,當我看到根本沒有提及某個版本,但手冊頁上的日期是2005年5月10日。

我想你有一個不正確的手冊頁。最有可能的是MANPATH,它首先在其他地方尋找。

至於爲什麼/usr/local/bin/sed你說的是GNU sed不兌現--version我不確定。你能提供更多關於這方面的細節嗎?

+0

謝謝蒂莫西。我剛剛重新啓動了電腦,現在它正常工作。我不知道MAC的BSD sed默認值,所以謝謝。我想當我安裝GNU Sed時,我損壞了一些東西。 – mcheema 2013-03-09 17:13:53

+2

@mcheema:'--version'和'--help'選項適用於使用GNU'getopt_long()'處理選項的GNU程序。它們在使用'getopt_long()'的程序中幾乎是普遍的。他們不支持這種形式的程序使用普通的'getopt()' - 它涵蓋了許多程序沒有寫入GNU編碼標準。有時,程序接受'-V'(或'-v')來打印版本信息;有時,程序會接受'-h'或' - ?'來打印幫助。然而,這樣做並不是強制性的,許多不這樣做。 – 2013-03-09 17:18:48

+0

謝謝@Jonathan Leffler。我大多是R程序員,但最近在閱讀Brian Kernighan採訪之後,受到awk和sed粉塵的啓發,因爲在處理凌亂數據的許多用例中,我發現這些工具非常有用。 – mcheema 2013-03-09 17:30:55