我在我的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的
謝謝蒂莫西。我剛剛重新啓動了電腦,現在它正常工作。我不知道MAC的BSD sed默認值,所以謝謝。我想當我安裝GNU Sed時,我損壞了一些東西。 – mcheema 2013-03-09 17:13:53
@mcheema:'--version'和'--help'選項適用於使用GNU'getopt_long()'處理選項的GNU程序。它們在使用'getopt_long()'的程序中幾乎是普遍的。他們不支持這種形式的程序使用普通的'getopt()' - 它涵蓋了許多程序沒有寫入GNU編碼標準。有時,程序接受'-V'(或'-v')來打印版本信息;有時,程序會接受'-h'或' - ?'來打印幫助。然而,這樣做並不是強制性的,許多不這樣做。 – 2013-03-09 17:18:48
謝謝@Jonathan Leffler。我大多是R程序員,但最近在閱讀Brian Kernighan採訪之後,受到awk和sed粉塵的啓發,因爲在處理凌亂數據的許多用例中,我發現這些工具非常有用。 – mcheema 2013-03-09 17:30:55