2015-06-29 81 views
1

當我嘗試將我的腳本的一部分複製並粘貼到命令行時,我得到一堆文件名和目錄以及我的實際代碼。例如,如果我複製和粘貼很簡單的東西,如:將腳本粘貼到帶有縮進的命令行

awk '{ 
     if ($4=="YES") 

     print $0 

}' file 

我得到喜歡的東西:

.java/ .history .pip/ .bash_history 

打印在命令行上。它有事情做,在我的腳本的缺口,因爲如果我複製和粘貼像腳本:

awk '{ 

if ($4=="YES") 

print $0 

}' 

我得到粘貼在命令行上沒有無用的物品。

有沒有人體驗過這個?我不確定是否有一種特殊的方法可以正確地縮進代碼,而不是我遵循的方式?

任何幫助表示讚賞。謝謝。

+3

問題是嵌入式標籤你用於縮進被視爲製表符完成嘗試。不使用製表符縮進將防止發生問題。 –

+3

這是你的shell的問題,它與awk完全沒有關係。話雖如此,在一個完全不同的主題上:您的awk腳本可以/應該簡化爲awk'$ 4 ==「YES」'文件' - 您編寫的所有代碼都是無關緊要的,只是重複默認行爲。 –

回答

1

當您在bash提示下按Tab兩次時,它會顯示一個可能的文件名完成列表,即使它是多行單引號字符串中間的>提示。當你告訴終端仿真器粘貼文本時,它會像輸入它一樣輸入每個字符,所以你應該期望得到相同的結果。

如果awk腳本夠複雜,從壓痕中受益,就應該把它放在一個文件,然後使用-f選項

從文件中運行它

awk -f filename