2014-12-02 57 views
0

我們擁有的其中規定代碼的一部分,-v grep的查詢

"diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep ^\> | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir" 

整個語句用雙引號(是應用語法的要求)。當應用程序到達這個階段時,它會給出grep錯誤。 該聲明在命令行上運行良好。但通過應用程序,給grep錯誤。

用法:grep的[選項] ...模式[FILE] ...

嘗試`grep的--help」以獲取更多信息。

所以不知道它是第一次grep還是第二次grep這是一個問題。

回答

0

看起來像雙引號問題。嘗試將您的第一個grep更改爲/usr/bin/grep -v '#',將第二個grep更改爲/usr/bin/grep '^>'

+0

就是這樣.....它以這種方式工作。感謝您的建議。 – user3615834 2014-12-02 09:09:10

+0

不客氣:) – 2014-12-02 09:10:30

0

您正在使用grep -v ^>>表示「重定向」。

比如你做的事:

grep ^>output 

所有的輸出將被存儲在文件output英寸

所以,你需要做的是引用^>使得它解釋爲你正在尋找的模式:

"diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep "^>" | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir" 
                 ^^ 

順便說一句,請注意您的所有grep S能夠像這樣被減少:

diff file1 file2 | awk '/#/ || /^>/ {print $3}' | /usr/bin/xargs mkdir 
         ^^^ ^^ ^^^^ 
      either contains # | | 
          or starts with > 
+0

謝謝,但其他評論是什麼解決了這個問題。 – user3615834 2014-12-02 09:11:20

+0

以及在這種情況下將雙引號改爲單引號沒有任何意義,但是...... – fedorqui 2014-12-02 09:14:58